|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开发板上能直接提供给用户使用的就是按键和LED。那我就先来实现LED的控制功能,也就是GPIO的输入输出功能。6 x0 d0 |" s1 f. q& ^' ~
一,首先了解硬件接口
7 w0 @- v8 v9 A: j8 `. ^0 e$ |; M: ^5 h1 V6 G
三个LED可以供控制,分别使用GPIO为PB8,PB9,PB10。, ]& ~( P% @$ l+ d) w
. X/ L# m# J% C+ K' [/ U l
二,通过gd32F3x0_Firmware_Library_V1.0.0库文件新建工程project。
5 N. x7 U; g6 `) s7 g. P7 N" y( F7 K" ?3 x, H4 P b, Q
本来是想移植freeRtos的,但是RAM太小,还是放弃了。接下来实现软件功能。
) Z7 d1 b M7 B3 n1,时钟
/ W) n. o6 J# ]+ t初始化时钟,开发板上没有焊接外部时钟,这里只能使用内部时钟了。- n, ?+ j5 e/ K" F
时钟控制单元提供了一系列频率和时钟功能, 包括一个内部 8M RC 振荡器时钟 (IRC8M) 、 一个内部 48M RC 振荡器时钟 (IRC48M) 、 一个内部 28M RC 振荡器时钟 (IRC28M) 、 一个外部高速晶体振荡器时钟 (HXTAL) 、 一个内部低速 RC 振荡器时钟 (IRC40K) 、 一个外部低速晶体振荡器时钟 (LXTAL) 、 一个锁相环 (PLL) 、 一个 HXTAL 时钟监视器、 时钟预分频器、 时钟多路复用器和时钟选通电路。7 S! H( K! C/ p
AHB 、 APB 和 Cortex™ -M4 时钟都源自系统时钟 (CK_SYS) , 系统时钟的时钟源为 IRC8M 、 HXTAL 或 PLL 。系统时钟的最大运行时钟频率可以达到 108MHz 。独立看门狗定时器定时器有独立的时钟源( IRC40K ), 实时时钟 (RTC) 使用 IRC40K 、 LXTAL 或 HXTAL/32 作为时钟源 。5 e" {& I( a8 t6 C
[2 u' T$ ~! b# f& R; p9 ^
预分频器可以配置 AHB 、 APB2 和 APB1 域的时钟频率。 AHB 、 APB2 和 APB1 域的最高时钟频率分别为 108MHz 、 54MHz 和 54MHz 。 RCU 通过 AHB 时钟 (HCLK)8 分频后作为 Cortex 系统定时器 (Systick) 的外部时钟。通过对 SysTick 控制与状态寄存器的设置,可选择上述时钟或 Cortex(HCLK) 时钟作为 SysTick 时钟 。
' X# b% n1 a V9 \系统复位后, IRC8M 时钟被选为系统时钟, 改变时钟配置寄存器 RCU_CFG0 中的系统时钟变换位 SCS 可以切换系统时钟源为 HXTAL 或 PLL 。当 SCS 的值改变, 系统时钟将使用原来的时钟源继续运行直到转换的目标时钟源稳定。 当一个时钟源被直接或通过 PLL 间接作为系统时钟时,它将不能被停止。' z0 i! \: o7 N% {
上文明显说复位后 IRC8M 时钟被选为系统时钟,但是在没有对时钟进行初始化时,打印出来的时钟就是108Mhz,太胡扯了。
1 s9 k, L' r% J1 a通过重定向串口输出
5 s' L. L: L6 X) w- s* v9 D8 u/ p5 T# r
可以通过开发的USB输出printf打印信息。
' Y; V- t# _; K+ |0 O+ ?8 s8 D. m2,设置系统滴答时钟
6 m, Q3 C7 F! r/ ]$ i( \. x0 ~' ]8 p7 _6 v1 h% w3 _: V3 i
定义1ms中断。2 z6 Z& @$ c9 y$ I$ [: K
. y l/ h$ e3 }: ^. H中断处理函数,1s闪烁一次。. Z1 z. C3 i5 t' B& Q/ r' G) G
3,编译下载
8 V) L5 O( Q4 P; i# K; `9 y仿真器选择
2 F& K8 I5 S3 v' E7 |3 f- G: Q8 Q: |( e
直接download下载后程序运行部起来。通过仿真调试模式,点击三次运行按钮,程序正常运行。我初始化时钟也是这样,还未查明原因。 |
|