新聞中心

        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 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 科技| 宁远县| 萝北县| 蒙山县| 韶山市| 绵竹市| 平谷区| 平邑县| 喜德县| 峡江县| 长乐市| 望江县| 炎陵县| 商水县| 蚌埠市| 华容县| 犍为县| 德格县| 金溪县| 漠河县| 会宁县| 峨边| 九龙坡区| 三明市| 女性| 清河县| 若尔盖县| 公主岭市| 涞水县| 马关县| 双城市| 原阳县| 洛川县| 沙河市| 开封县| 郓城县| 延津县| 昭平县| 普安县| 叙永县| 琼结县|