国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32_斷點(diǎn)調(diào)試無法進(jìn)入串口接收中斷

這篇具有很好參考價(jià)值的文章主要介紹了stm32_斷點(diǎn)調(diào)試無法進(jìn)入串口接收中斷。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

先說結(jié)果,可能是stm32調(diào)試功能/keil軟件/調(diào)試器(試過STLINK和JLINK兩種)的問題,不是代碼;

1、入坑

配置完串口后,可以發(fā)送數(shù)據(jù)到串口助手,但不能接收數(shù)據(jù)并做處理,所以第一步,想確定有沒有接收到單個(gè)字節(jié)進(jìn)入中斷。

開始打斷點(diǎn)調(diào)試,發(fā)現(xiàn)串口數(shù)據(jù)寄存器DR能收到數(shù)據(jù),串口狀態(tài)寄存器SR也有標(biāo)志的變化,但就是進(jìn)不了中斷服務(wù)函數(shù)的判斷,反復(fù)檢查配置、各種百度、直到替換為最簡單的工程只保留串口,仍然不能解決。

2、串口狀態(tài)寄存器

串口狀態(tài)寄存器,顯示了串口是否發(fā)送完成、接收到數(shù)據(jù)等,就是我們主要觀察的寄存器。

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

3、具體現(xiàn)象

3.1、初始狀態(tài)

斷點(diǎn)打在判斷是否收到數(shù)據(jù)的if語句,此時(shí),狀態(tài)寄存器SR=0xC0,未收到數(shù)據(jù),數(shù)據(jù)寄存器DR=0x00;

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

3.2、進(jìn)不去接收判斷

通過串口助手發(fā)送0x01,狀態(tài)寄存器SR=0xF0,表示收到數(shù)據(jù)RXNE=1,DR=0x01,收到數(shù)據(jù)和發(fā)送數(shù)據(jù)一致。

此時(shí)一切正常,理論上單步執(zhí)行后,應(yīng)該進(jìn)入if的內(nèi)容執(zhí)行接收數(shù)據(jù)的操作,但是直接跳到了else,再看狀態(tài)寄存器SR=0xC0,接收數(shù)據(jù)的標(biāo)志沒了RXNE=0,所以無法接收數(shù)據(jù)。

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

為什么RXNE標(biāo)志位被清掉了呢?

看手冊有兩種情況,一是讀數(shù)據(jù)寄存器,二是寫0。

但是我們既沒有去讀DR,更沒有寫0,只是單步執(zhí)行就自動(dòng)被清掉了。

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

3.3、修改斷點(diǎn)位置,正常進(jìn)入接收

通過串口助手發(fā)送0x02,狀態(tài)寄存器SR=0xF0,表示收到數(shù)據(jù)RXNE=1,DR=0x02,收到數(shù)據(jù)和發(fā)送數(shù)據(jù)一致,并且進(jìn)入if判斷內(nèi)部,可正常接收數(shù)據(jù)。

stm32 串口中斷進(jìn)不去,STM8/STM32,通信協(xié)議,stm32,單片機(jī),嵌入式硬件

?4、反思

配置出問題,可第一時(shí)間從單個(gè)功能的工程入手,直接在現(xiàn)有代碼上調(diào)試會(huì)有更多不確定的因素,更浪費(fèi)時(shí)間精力。

不要太相信打斷點(diǎn)調(diào)試,可能會(huì)有些代碼不能正常執(zhí)行,尤其是遇到和手冊中描述不一致的地方,奇奇怪怪的時(shí)候。文章來源地址http://www.zghlxwxcb.cn/news/detail-715675.html

到了這里,關(guān)于stm32_斷點(diǎn)調(diào)試無法進(jìn)入串口接收中斷的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32(HAL)串口中斷接收

    STM32(HAL)串口中斷接收

    目錄 1、簡介 2?基礎(chǔ)配置 2.1.1 SYS配置 ?2.1.2 RCC配置 2.2?串口外設(shè)配置 ?2.3 項(xiàng)目生成 ?3、KEIL端程序整合 本文對HAL串口中斷函數(shù)進(jìn)行介紹。 2.1.1 SYS配置 ?2.1.2 RCC配置 首先在main.c文件中進(jìn)行接受變量聲明。 ?接著在主函數(shù)的while循環(huán)中進(jìn)行接收中斷,如下所示: ?最后在主函數(shù)

    2024年02月14日
    瀏覽(37)
  • STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    STM32 HAL庫 串口中斷接收數(shù)據(jù)包

    目錄 一、CUBEmx配置 1.設(shè)置系統(tǒng)時(shí)鐘,配置SYS,配置時(shí)鐘樹 ??編輯 ?2.配置串口USART1 3.配置NVIC,開啟串口中斷 ?編輯4.點(diǎn)擊GENERATE CODE輸出文件即可 二、代碼部分 0.串口重定向——printf 1.關(guān)于舵機(jī) 2.開啟串口中斷函數(shù) 3.編寫串口回調(diào)函數(shù) 4.主函數(shù)部分 三、實(shí)驗(yàn)現(xiàn)象: 四、總

    2024年02月04日
    瀏覽(23)
  • 【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 串口中斷發(fā)送與接收

    【STM32】HAL庫 新建MDK工程 【STM32】HAL庫 串口輪詢發(fā)送 使用stm32串口中斷發(fā)送和中斷接收 在主函數(shù)前開啟中斷,接受字節(jié)數(shù)為5 接受5個(gè)字節(jié)后,進(jìn)入中斷接收完成回調(diào)函數(shù),重新再開啟中斷,并把接收到的數(shù)據(jù)返回 修改接收數(shù)組長度,改為開啟串口空閑中斷 接收事件回調(diào)函數(shù)

    2024年02月08日
    瀏覽(31)
  • 【STM32】HAL庫——串口中斷只接收到兩個(gè)字符

    環(huán)境:STM32CubeMX(6.7.0)+MDK-ARM(V5.36.0.0)+STM32F103C8T6 使用XCOM發(fā)送字符串(總共8個(gè)字符),單片機(jī)進(jìn)行解析為ModBus協(xié)議失敗,只接收到前兩個(gè)字節(jié)的數(shù)據(jù)。 原串口中斷回調(diào)函數(shù): 去掉串口中斷回調(diào)函數(shù)的printf函數(shù)即可 在嵌入式系統(tǒng)中,將printf函數(shù)直接放在串口中斷服務(wù)程序(ISR)中

    2024年01月22日
    瀏覽(23)
  • STM32用FreeRTOS串口中斷接收卡死問題

    STM32用FreeRTOS串口中斷接收卡死問題

    現(xiàn)在意法半導(dǎo)體的配套軟件做得很全面了,簡直可以說是保姆式的服務(wù)。從芯片選型,引腳定義,到代碼模板生成,一條龍服務(wù),很方便。但是方便也有方便的壞處,那就是有些細(xì)節(jié)的規(guī)則會(huì)造成天然的bug。 比如,在stm32cubeIDE里新建工程的時(shí)候,如果勾選了FREERTOS 那么,程序

    2024年02月15日
    瀏覽(23)
  • STM32實(shí)戰(zhàn)(三):利用空閑中斷從串口接收任意長數(shù)據(jù)

    STM32實(shí)戰(zhàn)(三):利用空閑中斷從串口接收任意長數(shù)據(jù)

    “ 想起密碼了,終于想起密碼了(′?ω?`) ” 這次我們利用STM32F103的UART內(nèi)部的空閑中斷來實(shí)現(xiàn)對串口任意長數(shù)據(jù)的接收,通過簡潔的手段解決了接收端在事前無法得知數(shù)據(jù)長度的問題。本次教程我們需要一塊STM32核心板與一個(gè)USB轉(zhuǎn)TTL工具。 STM32的異步串口接收寄存器可以存放

    2024年02月13日
    瀏覽(32)
  • STM32無法正常進(jìn)入外部中斷的問題

    ???????本人在使用外部中斷讀取鍵值的時(shí)候遇見了無法進(jìn)入外部中斷的問題,我的問題是這樣的:一開始想用STM32F103C8T6的PB12和PB14讀取兩個(gè)按鍵的狀態(tài),并且是使用外部中斷讀取,但是總是遇到一個(gè)按鍵的狀態(tài)可以讀?。窗存I按下,GPIO口的電平發(fā)生跳變,然后進(jìn)入對應(yīng)

    2024年02月11日
    瀏覽(20)
  • 解決STM32在延時(shí)時(shí)無法進(jìn)入中斷的問題

    問題: 在使用zigbee模塊時(shí),使用串口作為無線收發(fā)的載體,與stm32通信,使用DHT11作為簡單的受控源,出現(xiàn)了bug: 當(dāng)在while(1)里使用delay函數(shù),或者使用DHT11_Read_Data函數(shù)時(shí),程序無法進(jìn)入串口接收中斷,無法使用遠(yuǎn)程控制 其中的while函數(shù)為: 解決思路: 檢查接線之后,我首

    2024年02月12日
    瀏覽(14)
  • stm32串口通信(PC--stm32;中斷接收方式;附proteus電路圖;開發(fā)方式:cubeMX)

    stm32串口通信(PC--stm32;中斷接收方式;附proteus電路圖;開發(fā)方式:cubeMX)

    ?單片機(jī)型號STM32F103R6: 最后實(shí)現(xiàn)的效果是,開機(jī)后PC內(nèi)要求輸入1或0,輸入1則打開燈泡,輸入0則關(guān)閉燈泡,輸入其他內(nèi)容則顯示錯(cuò)誤,值得注意的是這個(gè)模擬的東西只能輸入英文 之所以用2個(gè)LED燈是因?yàn)長ED電阻粗略一算就是100歐姆,所以懶得再去畫其他的東西,真是天助我也

    2024年02月11日
    瀏覽(26)
  • 基于STM32F1以及STM32CubeMx實(shí)現(xiàn)串口中斷通訊(字符串發(fā)送與接收)

    基于STM32F1以及STM32CubeMx實(shí)現(xiàn)串口中斷通訊(字符串發(fā)送與接收)

    首先選好自己的板子并打開軟件設(shè)置,本實(shí)驗(yàn)基于STM32F103ZET6實(shí)現(xiàn),打開軟件后如圖: 打開外部高速晶振,然后接著配置時(shí)鐘: 將時(shí)鐘頻率修改為72MHz,接著設(shè)置接線方式為SW 接下來需要使用串口中斷通訊,打開我們的串口設(shè)置并打開中斷 這里波特率設(shè)置為115200,數(shù)據(jù)位為

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包