本帖最后由 KCLin 于 2016-2-3 22:32 编辑
最近研讀到串口通訊實驗main() 程式
一開始是做各種初始化
然後while(1){
if(USART_RX_STA&0x8000)
{ ..... }
這段應該是說,有 data 進來
但是,是哪個程式去讀了關於 USART_RX_STA 的變化?
做了 Debug 實在是追不到!
又 在 usart.c 裡面
除了一些串口的初始化之外
還多了
void USART1_IRQHandler(void)
{..........}
我大概知道,這個函數是要告訴系統,如果系統發生中斷,就來 run 這個函數
那麼,又是哪個程式負責呼叫他的?!
是不是這個函數,其中一個參數必須是 *USART1_IRQHandler
也就是傳遞中斷發生時觸發函數的 位置
(所以其實中斷觸發函數的名稱我們也可以隨意設定,只要把要做的函數位置正確傳遞即可?)
而
這是不是跟 USART_RX_STA 的變化有關?
新手,邏輯被搞得有些亂了
請各位前輩高手幫助解惑,感謝
以下是"原子探索者" 官方教材 " STM32F4 开发指南(库函数版) " 寫的
",一个接收状态寄存器 USART_RX_STA(此寄存器其实就是一个全局
变量,由作者自行添加。由于它起到类似寄存器的功能,这里暂且称之为寄存器)"
原子官方教材也說明,USART_RX_STA是個 "全局变量" 暂且称之为寄存器
另外,在探索者 F407 對應的STM官方參考手冊 "RM0090 Reference manual" 1010 頁,USART register map
也沒有記載關於 USART_RX_STA
甚至,對RM0090 Reference manual 搜尋,也不會發現 SART_RX_STA
至於頭文件內容是這樣
至於 m3 有沒有,那我就不知道了,畢竟我用的是 F104 不是 103
或許有空我再去找找看
感謝您的參與討論
一周热门 更多>