吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過配置串口的接收作為中斷源

麥辣雞腿堡 ? 來源:CSDN博客 ? 作者:藕粉- ? 2023-11-10 16:33 ? 次閱讀

使用中斷

  • 通過配置串口的接收作為中斷源,開啟中斷輸出控制,配置NVIC。開啟中斷通道。
//開啟中斷輸出控制
  USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
  
  //配置NVIC
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
  NVIC_InitTypeDef NVIC_InitStruct;
  NVIC_InitStruct.NVIC_IRQChannel=USART2_IRQn;   //選擇USART2的中斷通道
  NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;    //中斷使能
  NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
  NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
  NVIC_Init(&NVIC_InitStruct);
  • 中斷服務子函數

中斷服務子函數寫好后,就可以在中斷里讀取接收到的數據了。

當接收到數據后,觸發接收中斷,主程序暫停執行。接收完數據后主程序回復執行。當接收到數據時,就觸發中斷。

void USART2_IRQHandler(void)
{
  if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)   //RXNE 標志位為1 表示可以接收數據
  {
    RX_Data=USART_ReceiveData(USART2);
    Flag=1;
    USART_ClearITPendingBit(USART2,USART_IT_RXNE);  //清除RXNE標志位
  }
}
  • 主程序測試
uint8_t RX_Data;
uint8_t Flag;


int main()
{
    Serial_Init();
    Serial_SendByte(0x16);




    while(1)
    {
        if(Flag==1)
        {
            Serial_SendByte(RX_Data);
        }
    }
}


void USART2_IRQHandler(void)
{
    if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET)   //RXNE 標志位為1 表示可以接收數據
    {
        RX_Data=USART_ReceiveData(USART2);
        Flag=1;
        USART_ClearITPendingBit(USART2,USART_IT_RXNE);  //清除RXNE標志位
    }
}

下圖為程序現象:可以看到,串口確實收到了數據,只是我把接收到的數據0xFE放在了while循環里,這說明數據接收是成功的,使用中斷是可行的。

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2272

    文章

    10924

    瀏覽量

    357599
  • 串口通信
    +關注

    關注

    34

    文章

    1627

    瀏覽量

    55733
  • 函數
    +關注

    關注

    3

    文章

    4346

    瀏覽量

    62978
  • 中斷源
    +關注

    關注

    0

    文章

    16

    瀏覽量

    8028
收藏 人收藏

    評論

    相關推薦

    利用中斷實現串口不長接收數據

    STM32CUBEME--2USART通過DMA方式接收不定長數據概述硬件準備選擇芯片型號配置時鐘配置時鐘樹
    發表于 08-11 07:07

    STM32串口中斷 DMA接收的幾點注意地方

    STM32串口中斷、DMA接收的幾點注意地方
    的頭像 發表于 03-04 13:57 ?2.1w次閱讀

    STM32 串口使用IDLE中斷+DMA接收(HAL庫函數)

    STM32 串口使用IDLE中斷+DMA接收(HAL庫函數)一、開發環境單片機型號:STM32H743IIT6工程配置環境:STM32CubeMX 6.3.0固件庫:STM32Cube
    發表于 12-02 21:06 ?42次下載
    STM32 <b class='flag-5'>串口</b>使用IDLE<b class='flag-5'>中斷</b>+DMA<b class='flag-5'>接收</b>(HAL庫函數)

    STM32使用CubeMAX配置串口中斷接收方法

    STM32使用CubeMAX配置串口中斷接收方法目錄1.定位串口中斷發生的地方2.處理串口中斷接收
    發表于 12-14 18:45 ?28次下載
    STM32使用CubeMAX<b class='flag-5'>配置</b>的<b class='flag-5'>串口中斷</b><b class='flag-5'>接收</b>方法

    STM32 HAL CubeMX 串口IDLE接收空閑中斷+DMA

    關于DMA原理部分講解,及CubeMx配置部分,請參考該文章【STM32】HAL庫 STM32CubeMX教程十一—DMA (串口DMA發送接收)本篇文章我們僅針對例程進行詳解剖析本篇文章提供兩種
    發表于 12-20 19:39 ?31次下載
    STM32 HAL CubeMX <b class='flag-5'>串口</b>IDLE<b class='flag-5'>接收</b>空閑<b class='flag-5'>中斷</b>+DMA

    stm32 串口接收不定長度數據及黏包處理 + 串口DMA接收

    都是通過單片機的中斷機制實現的,stm32單片機串口接收有一個空閑中斷機制,只要我們在配置
    發表于 12-23 19:09 ?27次下載
    stm32 <b class='flag-5'>串口</b><b class='flag-5'>接收</b>不定長度數據及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>

    STM32—無需中斷來實現使用DMA接收串口數據

    本節目標:通過DMA,無需中斷,接收不定時長的串口數據 描述:當在串口多數據傳輸下,CPU會產生多次
    發表于 12-24 19:01 ?8次下載
    STM32—無需<b class='flag-5'>中斷</b>來實現使用DMA<b class='flag-5'>接收</b><b class='flag-5'>串口</b>數據

    STM32CubeMx配置DMA+串口空閑中斷+FreeRTOS,完美處理串口數據。

    作為STM32最常用的外設之一,可以說串口用的好不好可以看出使用者有沒有深入掌握STM32的使用。常見的串口輪訓發送+接收中斷雖然能夠應付一
    發表于 12-24 19:11 ?53次下載
    STM32CubeMx<b class='flag-5'>配置</b>DMA+<b class='flag-5'>串口</b>空閑<b class='flag-5'>中斷</b>+FreeRTOS,完美處理<b class='flag-5'>串口</b>數據。

    串口接收中斷--并不是說不使能串口接受中斷就無法接收數據

    并不是說不使能串口接受中斷就無法接收數據,只是為了在串口接收數據的時候防止其程序打擾串口數據的
    發表于 12-28 19:15 ?15次下載
    <b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>中斷</b>--并不是說不使能<b class='flag-5'>串口</b>接受<b class='flag-5'>中斷</b>就無法<b class='flag-5'>接收</b>數據

    LPC5500_SDK例程:串口DMA發送+中斷接收

    LPC5500_SDK例程:串口DMA發送+中斷接收
    的頭像 發表于 10-30 16:59 ?1198次閱讀
    LPC5500_SDK例程:<b class='flag-5'>串口</b>DMA發送+<b class='flag-5'>中斷</b><b class='flag-5'>接收</b>

    STM32串口中斷及DMA接收常見的幾個問題

    STM32串口中斷及DMA接收常見的幾個問題
    的頭像 發表于 10-26 16:41 ?3709次閱讀
    STM32<b class='flag-5'>串口中斷</b>及DMA<b class='flag-5'>接收</b>常見的幾個問題

    HAL_UART_Transmit阻塞時會影響串口中斷接收嗎?

    最近項目里使用了兩路串口透傳數據,串口3中斷接收數據,組包后通過串口1阻塞發送出去。
    的頭像 發表于 10-26 14:24 ?2010次閱讀
    HAL_UART_Transmit阻塞時會影響<b class='flag-5'>串口中斷</b><b class='flag-5'>接收</b>嗎?

    串口接收數據的兩種方式是什么

    上方是發送數據的例子,那么串口接收又該如何配置,又要在串口發送的例子上做哪些更改呢? 這里我們可以通過查詢或者
    的頭像 發表于 11-10 16:20 ?2512次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>接收</b>數據的兩種方式是什么

    stm32串口接收中斷觸發原理

    配置串口接收中斷使能:在初始化串口時,需要設置相應的控制寄存器來使能串口
    發表于 01-17 15:42 ?8042次閱讀
    stm32<b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>中斷</b>觸發原理

    串口中斷是內部中斷還是外部中斷串口中斷是怎么觸發的

    串口中斷通常被視為外部中斷。雖然串口控制器(如USART、UART等)可能集成在微控制器或處理器的內部,但從中斷的角度來看,串口中斷是由處理
    的頭像 發表于 01-29 15:03 ?139次閱讀
    皇冠现金网娱乐城| 百家乐官网如何看牌| 巨星百家乐官网的玩法技巧和规则 | 深州市| VIP百家乐-挤牌卡安桌板| 必博网址| 百家乐游戏官网| 名门国际娱乐| 真人百家乐代理合作| 紫阳县| 百家乐论坛博彩拉| 博九网百家乐官网现金网| 百家乐赌博分析网| 百家乐官网真人游戏开户| 木棉百家乐网络| 易胜博百家乐官网娱乐城| 太阳城娱乐网址| 都坊百家乐官网的玩法技巧和规则| 棋牌新教室| 网上百家乐骗人吗| 武安市| 太阳百家乐开户| 玩百家乐官网技巧巧| 飞7棋牌游戏| 美高梅百家乐娱乐城| 网上百家乐官网哪里好| 天猫百家乐娱乐城| 百家乐官网游戏单机牌| 顶级赌场 官方直营网络赌场| 澳门百家乐公司| 阳东县| 百家乐技巧技巧| 24山分别指什么| 百家乐官网蓝盾假网| 网上赌百家乐有假| 逍遥坊百家乐官网的玩法技巧和规则 | 真人百家乐娱乐场| 广州百家乐官网酒店用品制造有限公司| 载大发888软件| 现金百家乐网上娱乐| 新澳门百家乐官网娱乐城|