新聞中心

        STM32-ucosii中的串口中斷

        作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
        μC/OS中,中斷服務(wù)子程序要用匯編語言來寫。然而,如果用戶使用的C語言編譯器支持在線匯編語言的話,用戶可以直接將中斷服務(wù)子程序代碼放在C語言的程序文件中。
        再看《M3權(quán)威指南》2.11.2節(jié)與9.11節(jié)中講到Cortex-M3在進(jìn)入異常時(shí)自動(dòng)壓棧。。。。返回時(shí)自動(dòng)出棧,再也不需要匯編語言編寫了。也就是說我們可以使用C語言來編寫中斷服務(wù)程序。并且省去了上面程序清單的(1)(5)(6).
        其實(shí)ucos中的終端和裸奔的中斷寫法基本一致,只是加了幾條語句,如下為串口中斷的寫法:
        void USART1_IRQHandler(void)
        {
        uint8_t RxData;
        OS_CPU_SR cpu_sr;
        OS_ENTER_CRITICAL();
        OSIntNesting++;
        OS_EXIT_CRITICAL();
        if(USART_GetITStatus(USART1, USART_IT_RXNE )==SET)//接收中斷
        {
        USART_ClearITPendingBit(USART1,USART_IT_RXNE);//清楚接收中斷標(biāo)志位
        RxData = USART_ReceiveData(USART1); //接收數(shù)據(jù)
        if(RxData!=0)//字符串接收完畢
        {
        Usart1RXArray[Usart1RXLen++]=RxData;
        }
        }
        OSIntExit();
        }
        紅色為與裸奔相比添加的代碼。中斷服務(wù)程序的函數(shù)名也不用改變。


        關(guān)鍵詞: STM32ucosii串口中

        評(píng)論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 正蓝旗| 开远市| 北流市| 普兰店市| 柳江县| 望都县| 武汉市| 库车县| 本溪市| 略阳县| 嘉荫县| 玉屏| 烟台市| 东乡族自治县| 罗山县| 拉萨市| 内乡县| 肇庆市| 通海县| 勐海县| 安义县| 青冈县| 策勒县| 灵山县| 牙克石市| 盐山县| 长岛县| 旬邑县| 龙游县| 湟中县| 阿城市| 常宁市| 台北县| 益阳市| 仲巴县| 克拉玛依市| 偃师市| 井冈山市| 镇远县| 达孜县| 略阳县|