久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4067|回復: 0
打印 上一主題 下一主題
收起左側

STM8S類型單片機UART一直進入接收中斷問題解決方案

[復制鏈接]
跳轉到指定樓層
樓主
ID:260753 發表于 2018-3-3 17:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

問題描述:

在一個項目中,下位機使用的是STM8S003F3為主芯片。在使用RS485進行與上位機通信時,會一直進入接收中斷,根本未接收到上位機的正確數據。

解決過程:

一開始以為是485芯片R0引腳未上拉的緣故導致這個問題,經過將此引腳通過MCU內部上拉,問題得到緩解。程序工作也穩定了,運行了一周也沒問題,所以一直以為問題解決了,結果在實地安裝后,沒過多久又出現了這個問題,按理說,如果是外部電磁干擾,應該是偶發,也不應該出現了就不會好起來,干擾源不可能一直都在。然后又是一個頭疼的事啊。。繼續找答案解決。

這時又跑去官網下載了stm8s類芯片的應用手冊,重點就是它了。

原來stm8s類型芯片的UART使用時在接收中斷時要注意一個過載問題,下面呢就是手冊原文:

過載錯誤如果RXNE還沒有被復位,又接收到一個字符,則發生溢出錯誤。數據只有當RXNE位被清零后才能從移位寄存器轉移到RDR寄存器。當溢出錯誤產生時:● OR位被置位。● RDR內容將不會丟失。讀UART_DR寄存器仍能得到先前的數據。● 移位寄存器中以前的內容將被覆蓋。隨后接收到的數據都將丟失。● 如果RIEN位被置1,則產生中斷。順序執行對UART_SR和UART_DR寄存器的讀操作,可復位OR位。

首先STM8的UART接收中斷的使能位是RIEN,而當RIEN為1的時候就會進入接收中斷,而能讓RIEN為1的時候是有兩種情況的。

1,一個就是在接收寄存器不為空的時候。(對應的中斷請求標志RXNE)

2,另一個就是上面說的過載錯誤了,在RXNE標志位還沒有復位,又接收到一個字符,這時也會觸發接收                   中斷。(對應的中斷標志位OR)

那么我們的問題就是出現在這里了,我們在每次接收中斷都會清除RXNE標志位,但是并沒有清除OR標志位,故當出現一次RXNE還沒有被復位,又接收到一個字符的情況也就出現了OR一直沒被清除,所以就一直進入接收中斷了。所以解決問題就是只要每次接收中斷都需要清除RXEN和OR這兩個標志位就可以解決問題了。

解決方法:

對于RXNE清零有兩種方法:直接手動清零或讀UART_DR寄存器就可以讓RXNE清零。 對于OR清零就不能直接手動寫0了,這時為了同時能清除RXNE和OR標志位,我們就使用手冊上最后一句給的方案。順序讀取這兩個寄存器,這樣即清除了OR同時又清除了RXNE標志位。

代碼:(用的stm8s lib庫)

INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18){    /* Read one byte from the receive data register */
if( UART1_GetITStatus(UART1_IT_RXNE) == SET)
{    Rxdata = UART1_ReceiveData8();
}}

if( UART1_GetITStatus(UART1_IT_RXNE) == SET)

這句就是讀取UART_SR寄存器,函數是庫函數

Rxdata = UART1_ReceiveData8();

這句就是讀取UART_DR寄存器,Rxdata就是自己定義接收數據的一個變量(緩存區)。函數是庫函數,讀                 取八位數據。

至此,無限進入接收中斷的問題就解決了。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩涩视频在线观看免费 | 国产91在线播放精品91 | 一区二区三区在线播放 | 亚洲国产aⅴ精品 | 亚洲一区欧美 | 亚洲精品高清视频在线观看 | 国产精品久久久99 | 一区二区三区观看视频 | 国产精品国产三级国产aⅴ原创 | 免费一级欧美在线观看视频 | 精品久久久久久 | 精品国产乱码久久久久久闺蜜 | 久久久久久久电影 | 国产精品久久久久久久久久免费看 | 最新午夜综合福利视频 | 中文字幕视频在线观看免费 | 国产精品国产三级国产aⅴ入口 | 91精品中文字幕一区二区三区 | 久久精品一区二区三区四区 | 一区二区三区亚洲 | 国精产品一品二品国精在线观看 | 国产亚洲网站 | 91xxx在线观看 | 免费a大片| 亚洲精品久久久久久久久久久久久 | 久久国产亚洲 | 国产激情视频在线 | 黄色毛片视频 | 国产在线一区二区 | 久久99国产精一区二区三区 | 国产高清精品在线 | 精品1区2区3区 | 国产98色在线| av网站免费 | 久久久蜜桃 | 国产欧美日韩综合精品一区二区 | 欧美日韩国产中文字幕 | www国产成人| 久久久国产精品 | 91电影| 日韩免费视频一区二区 |