新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 通過學習USART1深入STM32F107VCT6的串口通信

        通過學習USART1深入STM32F107VCT6的串口通信

        作者: 時間:2016-12-01 來源:網絡 收藏

        例:


        #include "stm32f10x.h"

        #include "stm32_eval.h"

        #include

        USART_InitTypeDef USART_InitStructure; //定義結構體類型變量

        void GPIO_Configuration(void); //聲明GPIO配置函數

        #ifdef __GNUC__

        #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) //此處定義為putchar應用

        #else

        #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

        #endif


        int main(void)

        {

        SystemInit(); //配置系統時鐘

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1| RCC_APB2Periph_AFIO, ENABLE); //打開APB2功能時鐘(UART1為連接在APB2上的高速外設)開啟了串口時鐘和復用功能時鐘

        GPIO_Configuration(); //調用GPIO配置函數

        USART_InitStructure.USART_BaudRate = 115200; //設置USART傳輸波特率

        USART_InitStructure.USART_WordLength = USART_WordLength_8b; //設置USART傳輸數據位一幀為8位

        USART_InitStructure.USART_StopBits = USART_StopBits_1; //設置USART傳輸每幀一個停止位

        USART_InitStructure.USART_Parity = USART_Parity_No; //設置USART無奇偶校驗

        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //設置USART無硬件流控制

        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//開啟USART發送和接受功能

        USART_Init(USART1, &USART_InitStructure); //初始化USART1設置

        USART_Cmd(USART1, ENABLE); //開啟USART1

        printf(" 李繼超是個好人嗎? ");

        printf(" 回答:李繼超是個大好人! ");

        printf(" 菏澤是個是個美麗的地方! ");

        printf(" 發生了什么?你是猴子請來的救兵嗎? ");

        printf(" 嗯!李繼超的確是個大好人!!!你才魔道呢!哼!!! "); //配置輸出數據

        while (1)

        {

        }

        }

        void GPIO_Configuration(void)

        {

        GPIO_InitTypeDef GPIO_InitStructure; //定義結構體變量類型

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //打開GPIOA的功能時鐘

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //選擇GPIO引腳GPIO_Pin_9

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //設置GPIO速率

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //設置GPIO_pin_9為 復用功能 推挽輸出

        GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIO_Pin_9設置

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //選擇GPIO引腳GPIO_Pin_10

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //設置GPIO_Pin_10浮空輸入

        GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIO_Pin_10設置

        }

        PUTCHAR_PROTOTYPE //重定義printf函數

        {

        USART_SendData(USART1, (uint8_t) ch); //發送字符串

        while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)// 檢測是否發送完成

        {}

        return ch;

        }

        #ifdef USE_FULL_ASSERT

        void assert_failed(uint8_t* file, uint32_t line)

        {

        while (1)

        {}

        }

        #endif


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 云梦县| 噶尔县| 新丰县| 吕梁市| 贺兰县| 衡东县| 乌苏市| 东台市| 海阳市| 广南县| 甘南县| 宝清县| 湖北省| 琼结县| 正宁县| 紫云| 莫力| 五河县| 怀远县| 阿尔山市| 汾阳市| 吴忠市| 文昌市| 来安县| 邢台县| 高州市| 南陵县| 息烽县| 绍兴县| 延川县| 安远县| 大英县| 磐石市| 安康市| 阜城县| 信阳市| 株洲县| 玉树县| 和平区| 商丘市| 师宗县|