1.7.7.1、整個程式流程分析
(1)整個串列埠通訊相關程式包含2部分:uart_init負責初始化串列埠,uart_putc負責傳送乙個位元組
1.7.7.2、串列埠控制器初始化關鍵步驟
(1)初始化串列埠的tx和rx引腳所對應的gpio(查原理圖可知rx和rx分別對應gpa0_1和gpa0_0)
(2)gpa0con(0xe0200000),bit[3:0] = 0b0010bit[7:4] = 0b0010
(3)初始化這幾個關鍵暫存器ucon0 ulcon0 umcon0 ufcon0 ubrdiv0 udivslot0
1.7.7.3、主要的幾個暫存器
(1)ulcon0 = 0x3// 0校驗位、8資料位、1停止位
(2)ucon = 0x5// 傳送和接收都是polling mode
(3)umcon0 = 0x0// 禁止modem、afc
(4)ufcon0 = 0x0// 禁止fifo模式
(5)ubrdiv0和udivslot0和波特率有關,要根據公式去算的
1.7.7.4、在c原始檔中定義訪問暫存器的巨集
定義好了訪問暫存器的巨集之後,將來寫**時直接使用即可。
《朱老師物聯網大講堂》學習筆記
**是在上次的基礎上增加
新增了main.c和uart.c
注意修改start.s和makefile檔案,
在start.s中呼叫main函式,main函式中呼叫uart.c中的串列埠初始化和輸出函式,
這節課還是看看暫存器為主,只是引子,看乙個就可以,
串列埠初始化的關鍵步驟:
1.初始化tx和rx引腳所對應的gpio,它們分別對應gpa0_1和gpa0_0,
3.接下來是幾個關鍵性的暫存器
ucon0 ulcon0 umcon0 ufcon0 ubrdiv0 udivsloto
ulconn
31~7 保留
6紅外相關
5~3奇偶校驗,暫時不用
2使用1bit來設定
1~0 資料位長度
保留20
沒用到dma,隨便設
19~17
保留16
沒用到dma,隨便設
15~11
保留10
選用0,也就是pclk
9中斷,暫時不用
8中斷,暫時不用
7fifo暫時沒用
6中斷,暫時沒用
5loop_back,回環,也就是用來測試自己,可以不用
4不知道有什麼用
3~2設定01,使用輪詢
1~001,設定輪詢
全都設定為0
fifo相關的,可以不用
ubrdivn和udivslotn和波特率有關,後面根據公式去算。
這些暫存器都熟悉了以後,我們要進行相關巨集的定義
#defineutrstat00xe2900010
#defineutxh0 0xe2900020
#defineurxh0 0xe2900024
#definerutrstat0(*(volatile unsigned int *)utrstat0)
#definerutxh0(*(volatile unsigned int *)utxh0)
#definerurxh0(*(volatile unsigned int *)urxh0)
S5PV210序列通訊程式設計實戰 1
1 整個程式流程分析 程式是第五章icache專案複製過來的有 clock.s led.s start.s 新增bl main呼叫 makefile 依懶裡要新增uart.o和main.o mkv210 image.c 多新增乙個,uart.c再新增乙個main.c呼叫uart.c 1 整個串列埠通...
S5PV210 裸機中斷
這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...
S5PV210控制蜂鳴器
s5pv210帶有乙個蜂鳴器,十分吵鬧,本章將學習如何控制蜂鳴器。相關引腳 蜂鳴器的操作十分簡單,原理跟操作led一樣,通過控制gpdo o這個引腳就可以達到控制蜂鳴器的目的。1.start.s start.s做了下面3件事 第一步 關看門狗 第二步 設定棧,以便呼叫c函式 第三步 呼叫main函式...