3. 修改串列埠波特率9600。
14. 修改串列埠的引腳#define npi_uart_br hal_uart_br_9600
15. 修改串列埠的中斷配置,疑問是為啥是用p0中斷,而不是uart1的rxd中斷?#define pxsel p0sel //
串列埠配置到p0口
2#define hal_uart_percfg_bit 0x00 //
usart1 on p0, alt-1; so clear this bit,使用alt1,所以清零
3#define hal_uart_pripo 0x40 //
usart0 priority over uart1.串列埠優先順序
4#define hal_uart_px_cts 0x04 //
peripheral i/o select for cts flow control. 串列埠流控引腳
5#define hal_uart_px_rts 0x08 //
peripheral i/o select for rts must be manual. 串列埠流控引腳
6#define hal_uart_px_sel 0x30 //
peripheral i/o select for rx/tx. 串列埠的rxd和txd引腳,p0_4和p0_5
16. 修改中斷函式haluart0txisr#define pxdir p0dir //
串列埠在p0
2#define pxien p0ien //
p0中斷使能
3#define pxifg p0ifg //
p0中斷使能
4#define pxif p0if
5#define dma_rdyin p0_2 //
cts流控引腳
6#define dma_rdyout p0_3 //
rts流控引腳
7#define dma_rdyin_bit bv(2) //
same as the i/o select for cts flow control.//cts流控引腳
8#define dma_rdyout_bit bv(3) //
same as the i/o select for manual rts flow ctrl.//rts流控引腳9//
falling edge isr on p1.4-7 pins.
10#define pictl_bit bv(0) //
中斷邊沿檢測
11#define ienx ien1 //
中斷使能暫存器,這裡的疑問就是為啥使能的是p0的中斷,不是uart1的rxd中斷
12#define ien_bit bv(5) //
中斷使能暫存器第5位p0ie
17. 看下ien1的暫存器hal_isr_function( haluart0txisr, utx0_vector )210
else
1119}20
21hal_exit_isr();
22 }
1 sfrbit( ien1 , 0xb8, _ien17, _ien16, p0ie, t4ie, t3ie, t2ie, t1ie, dmaie )8. 串列埠初始化函式和傳送
19. 串列埠接收**函式npi_inittransport(npiserialcallback);
2 uart1send("
1h1h0
",5);
1 uint8 buffer[32] = ;10. 完成,可以正常的收發資料。2static
void
npiserialcallback(uint8 port, uint8 events)
3
CC2541 關閉串列埠問題
在除錯低功耗時,最好關閉串列埠,需要修改巨集 hal uart false hal uart dma 1 hal uart isr 0 hal uart tx by isr 1 但是修改完之後會編譯錯誤,提示 undefine external print msg 原因是這個函式在 hal uart...
cc2541實現全雙工串列埠讀寫
2541的osal封裝已經封裝好了串列埠的讀寫,為何要自己實現一次呢?這裡最重要的原因是因為預設實現的串列埠讀寫程式會對低功耗功能有影響,以及預設串列埠程式在進入低功耗的時候會去控制rx,tx,ct,rt腳,而很多時候我們實際只用了rx,tx腳,另外兩個腳被用於其他外設,所以為了增加控制,不得不自己...
CC2541之連線時廣播
一 簡介 本篇以 bleperipheral工程為例,介紹實現連線時廣播的方法。二 實驗平台 協議棧版本 ble cc254x 1.4.0 編譯軟體 iar 8.20.2 硬體平台 smart rf開發板 博主 甜甜的大香瓜 897503845 qq.com 技術交流qq群 127442605 四 ...