新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32的串口配置(中斷方式)

        STM32的串口配置(中斷方式)

        作者: 時間:2013-04-10 來源:網絡 收藏

        修改NVIC_Configuration函數

        /***********************************************************

        * Name : NVIC_Configuration

        * Deion : Configures NVIC and Vector Table base location.

        * Input : None

        * Output : None

        * Return : None

        ***************************************************/

        void NVIC_Configuration(void)

        {

        NVIC_InitTypeDef NVIC_InitStructure;

        #ifdef VECT_TAB_RAM

        /* Set the Vector Table base location at 0x20000000 */

        NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

        #else /* VECT_TAB_FLASH */

        /* Set the Vector Table base location at 0x08000000 */

        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

        #endif

        /* Configure the NVIC Preemption Priority Bits */

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

        /* Enable the USART1 Interrupt */

        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQChannel;

        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

        NVIC_Init(NVIC_InitStructure);

        }

        //串口中斷

        void USART1_IRQHandler(void)

        {

        //處理接收到的數據

        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

        {

        /* Clear the USART1 Receive interrupt */

        USART_ClearITPendingBit(USART1, USART_IT_RXNE);

        }

        //發送中斷

        if (USART_GetITStatus(USART1, USART_IT_TXE) != RESET)

        {

        USART_SendData(USART1, Send_Data[Send_Length++]);

        if (Send_Length==SEND_LENGTH)

        {

        //發送字節結束

        USART_ClearITPendingBit(USART1,USART_IT_TXE);

        USART_ITConfig(USART1, USART_IT_TXE, DISABLE);

        USART_ITConfig(USART1, USART_IT_TC, ENABLE);

        }

        }

        //發送完成

        if (USART_GetITStatus(USART1, USART_IT_TC) != RESET)

        {

        USART_ClearITPendingBit(USART1,USART_IT_TC);

        USART_ITConfig(USART1, USART_IT_TC, DISABLE);

        }

        }

        在需要發送的程序里Send_Data[SEND_LENGTH]和發送長度設置好,

        void Send_to_PC(void)

        {

        //設置好Send_Data[SEND_LENGTH]數組

        //打開發送中斷

        USART_ITConfig(USART1, USART_IT_TXE, ENABLE);

        }

        至此 串口就可以工作起來了!~


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 子长县| 丰宁| 乡城县| 县级市| 天柱县| 攀枝花市| 大安市| 固始县| 保康县| 潜江市| 会昌县| 天长市| 邯郸市| 龙里县| 广东省| 五河县| 平利县| 宁化县| 阿图什市| 余干县| 河津市| 汉寿县| 定日县| 顺义区| 淳安县| 龙里县| 博湖县| 鞍山市| 黑龙江省| 胶州市| 盐边县| 金沙县| 务川| 沿河| 绥阳县| 辉县市| 赤峰市| 新晃| 迭部县| 长垣县| 深州市|