新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32 串口之中斷接受

        STM32 串口之中斷接受

        作者: 時間:2016-11-25 來源:網絡 收藏
        使用STM32串口的中斷方式接收數據,接收來自另外一板子的按鍵數字,同時點亮相應的LED燈。

        工程結構圖:

        本文引用地址:http://www.104case.com/article/201611/321299.htm

        1、 main.c代碼截圖如下;



        2、其中的LED代碼與另外一篇《STM32 基于庫函數控制按鍵蜂鳴器 LED顯示》代碼完全同。這里就不上了。

        3、USART驅動部分:

        #include"stm32f10x.h"
        #include"usart1.h"
        #include
        #include

        //========================================================
        #ifdef __GNUC__

        #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
        #else
        #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
        #endif
        //========================================================



        static void NVIC_Configuration(void)
        {
        NVIC_InitTypeDef NVIC_InitStructure;

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);


        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        }



        void USART_Config(void)
        {
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;


        RCC_APB2PeriphClockCmd(USART_Port_RCC|RCC_APB2Periph_AFIO,ENABLE); //開啟USART使用的GPIO的時鐘
        #ifdef usart1
        RCC_APB2PeriphClockCmd(USART_RCC,ENABLE); //開啟USART的時鐘
        #elif defined usart2
        RCC_APB1PeriphClockCmd(USART_RCC,ENABLE);
        #endif



        GPIO_InitStructure.GPIO_Pin =USART_TX_Pin;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP; //復用推免式輸出
        GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

        GPIO_Init(USART_TX_Port,&GPIO_InitStructure);


        GPIO_InitStructure.GPIO_Pin =USART_RX_Pin;
        GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN_FLOATING; //浮空輸入

        GPIO_Init(USART_RX_Port,&GPIO_InitStructure);


        USART_InitStructure.USART_BaudRate=115200; //波特率
        USART_InitStructure.USART_WordLength=USART_WordLength_8b; //8位字長
        USART_InitStructure.USART_StopBits=USART_StopBits_1; //1位停止位
        USART_InitStructure.USART_Parity=USART_Parity_No; //無奇偶效驗位
        USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; //發送接收模式
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //無硬件流控

        USART_Init(USART,&USART_InitStructure);

        USART_ITConfig(USART,USART_IT_RXNE,ENABLE);

        USART_Cmd(USART,ENABLE);

        NVIC_Configuration();
        }


        上一頁 1 2 下一頁

        關鍵詞: STM32串口中斷接

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 内江市| 昔阳县| 清丰县| 泰州市| 武平县| 噶尔县| 车险| 合阳县| 临汾市| 宁陕县| 张家川| 镇江市| 安图县| 巫山县| 乌兰察布市| 安丘市| 蓝山县| 张北县| 洛南县| 嵩明县| 遂平县| 涡阳县| 襄垣县| 蒙自县| 肥城市| 读书| 香格里拉县| 安阳市| 太湖县| 库车县| 新乡市| 夏河县| 阿鲁科尔沁旗| 淮南市| 夏邑县| 福泉市| 西吉县| 安图县| 金湖县| 铜山县| 桦南县|