STM32F103ZE於Keil C中對USART的應用


ㄧ般來說當Keil C安裝好之後可在他的資料夾中找到相對應的CPU範例,而我所用的是STM32F103ZE,所以就針對這棵CPU來找他的範例,如C:\Keil\ARM\Boards\Keil\MCBSTM32E


        在這些範例裡面一般來說,都已經幫你做好一些基本的設定了,只需要再有其他需求時,自行做更新即可。有關USART的設定可以參考stm32f10x_map.h(USART基底位址設定)STM32_Init.c(USART初始化設定)stm32f10x_usart.h(USART功能定義)Serial.c(功能函式設定)


        而我所要做的是使用USARTRFID做溝通,由於Keil C已經幫你做好基本的設定,因此在USART的溝通上可以非常的簡單與便利,在Blinky的範例中可以看到它要傳送資料給超級終端機上顯示,只需要使用printf()這個指令即可。當然在serial.c中的sendchar()函式也是可以的,而要接收資料可以使用getc()也可以使用serial.c中的getkey()函式,不過個人是建議用getkey(),主要也是因為我有遇過一個情況,就是當所要等待讀取的資料空了之後而設定讀取的涵式(getc())只要設定超過一個字元他就整個程式停在那等待了,這也跟他設定讀取字元的方式用while()有關,由於一直等不到他狀態的變化,所以就只能無止盡的等待。因此我在serial.c中的getkey()函式,修改增加一個判別式,當讀取的時間過久就會跳離開並回傳0xFF


        用這樣的方法可以很好的解決,當RFID沒有讀取到TAG時不會陷入無限回圈而導致無法再次讀取TAG

創作者介紹
創作者 flykof 的頭像
flykof

十年磨一劍

flykof 發表在 痞客邦 留言(0) 人氣()