作業系統之前的程式 for stm32f4discovery (3) - usart



usart 是很重要的輸入/輸出功能, stm32f4discovery 有好幾組 usart, 這範例選用了 usart2 這組, 接腳是 PA2, PA3, 另外的 gnd, 5v 用, 可接可不接。

感謝 JuluOSDev 陳?毅補充:
「VCC 不需要接 但是 GND 需要接的 不接的話叫作 floating 兩邊的電位不見得相同可能會有奇怪現象, GND相接, 共地才會有一個正確的參考電位平面!」



整條線長這樣, fea 提供了這個方法, 減輕了硬體工作負擔, 一個純軟體開發人員, 去焊一個 uart 出來, 實在有點困難。插上 pc 的 usb 端之後, 當然沒搞定, 還有 usart code 要寫。



45 NT 參加 團購購得, 20130406 拿到, 上圖是接腳圖示。

PA2: usart2_tx -> 白色線 (rx)
PA3: usart2_rx -> 綠色線 (tx)

PA2, PA3 定義請參考:  UM1472 User Manual STM32F4DISCOVERY STM32F4 high-performance discovery board 4.11

我為 uart 困擾很久, 不知道怎麼處理, 本想使用 usb cdc, 不過 usb code 實在複雜, 現在有此方案, usart code 也相對容易些, 總算可以在 stm32f4discovery 印東西了。



alternate function register 稍微提一下, 我也不確定是不是這樣, 看不懂 datasheet 的內容。uart2 rx/tx 是 AF7, PA2, PA3 的 2, 3 是屬於 0..7 所以要設定 0x20 (GPIO alternate function low register) 這組暫存器。

Bits 31:0 AFRLy: Alternate function selection for port x bit y (y = 0..7)
These bits are written by software to configure alternate function I/Os
AFRLy selection:
0000: AF0
0001: AF1
0010: AF2
0011: AF3
0100: AF4
0101: AF5
0110: AF6
0111: AF7
1000: AF8
1001: AF9
1010: AF10
1011: AF11
1100: AF12
1101: AF13
1110: AF14
1111: AF15

AF7 的值是 0111, 也就是 0x7, 所以設定 GPIO alternate function low register。
PA2: 8-11 為 0x7
PA3: 12-15 為 0x7

就是 GPIO_PinAFConfig() 做的設定。

除此之外 source code 沒什麼好介紹的, 從 fea 的版本小改而來 (另外參考網路上抓的 ur 程式碼), 使用 polling mode, 再從 st library 複製/貼上。這程式的價值在於, 我縮到只有一個 .c 檔, 方便對照 datasheet 查閱, 不用和整個 library 奮戰。

source code:
https://github.com/descent/stm32f4_prog
myur.c

make myur.bin

這系列暫時先這樣, 有了基本的 uart 輸入/輸出, 又有了 led, 應該有足夠的武器開工了。

20130425 補充:

由於我的無知, 這個 ur 程式有一個致命的缺點, 我沒有設定 cpu 的工作時脈, 所以 cpu 運作在 16000000 下, 而當我將 cpu 時脈設為 168000000 時, 此 ur 程式無法正常工作, 除錯中 ...

不介意這點的話, 勉強可用。

20130510 補充:
This version can work on 168M HZ cpu clock.
source code:
https://github.com/descent/stm32f4_prog/tree/master/myur_168M
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值