|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
开发板上能直接提供给用户使用的就是按键和LED。那我就先来实现LED的控制功能,也就是GPIO的输入输出功能。
6 s4 G( `' b2 S6 w; T `一,首先了解硬件接口9 \0 g2 w- X( i+ t5 d
2 x6 m8 j# c7 }- n* J2 ^4 C# _
三个LED可以供控制,分别使用GPIO为PB8,PB9,PB10。
0 E% ~; U! [! ~7 i" I* F
. Y8 r9 K" {1 ]2 g; J% W0 u( ?二,通过gd32F3x0_Firmware_Library_V1.0.0库文件新建工程project。1 z }6 I5 D- Z7 ~; \& Q4 Z, U
) b) ^1 f& o$ J8 B
本来是想移植freeRtos的,但是RAM太小,还是放弃了。接下来实现软件功能。' O$ h1 v7 k0 g8 X! n
1,时钟: R: Q: Z- V( u2 w6 Z
初始化时钟,开发板上没有焊接外部时钟,这里只能使用内部时钟了。
, K0 H4 N3 M3 W. T时钟控制单元提供了一系列频率和时钟功能, 包括一个内部 8M RC 振荡器时钟 (IRC8M) 、 一个内部 48M RC 振荡器时钟 (IRC48M) 、 一个内部 28M RC 振荡器时钟 (IRC28M) 、 一个外部高速晶体振荡器时钟 (HXTAL) 、 一个内部低速 RC 振荡器时钟 (IRC40K) 、 一个外部低速晶体振荡器时钟 (LXTAL) 、 一个锁相环 (PLL) 、 一个 HXTAL 时钟监视器、 时钟预分频器、 时钟多路复用器和时钟选通电路。: i6 P) A0 M9 C2 Y/ g. y
AHB 、 APB 和 Cortex™ -M4 时钟都源自系统时钟 (CK_SYS) , 系统时钟的时钟源为 IRC8M 、 HXTAL 或 PLL 。系统时钟的最大运行时钟频率可以达到 108MHz 。独立看门狗定时器定时器有独立的时钟源( IRC40K ), 实时时钟 (RTC) 使用 IRC40K 、 LXTAL 或 HXTAL/32 作为时钟源 。/ m/ g7 w" T" q
! y* m( r, L5 t& @: d' u m预分频器可以配置 AHB 、 APB2 和 APB1 域的时钟频率。 AHB 、 APB2 和 APB1 域的最高时钟频率分别为 108MHz 、 54MHz 和 54MHz 。 RCU 通过 AHB 时钟 (HCLK)8 分频后作为 Cortex 系统定时器 (Systick) 的外部时钟。通过对 SysTick 控制与状态寄存器的设置,可选择上述时钟或 Cortex(HCLK) 时钟作为 SysTick 时钟 。+ ^: f1 h, K9 F ^
系统复位后, IRC8M 时钟被选为系统时钟, 改变时钟配置寄存器 RCU_CFG0 中的系统时钟变换位 SCS 可以切换系统时钟源为 HXTAL 或 PLL 。当 SCS 的值改变, 系统时钟将使用原来的时钟源继续运行直到转换的目标时钟源稳定。 当一个时钟源被直接或通过 PLL 间接作为系统时钟时,它将不能被停止。* c& N: y3 h1 f7 P2 R- Y
上文明显说复位后 IRC8M 时钟被选为系统时钟,但是在没有对时钟进行初始化时,打印出来的时钟就是108Mhz,太胡扯了。
; H5 m1 C& `- D7 Y通过重定向串口输出- T. j# X# _, j' W0 [
, E( j: Q) l) H( i( G1 l. q可以通过开发的USB输出printf打印信息。
. d8 W; G1 x; A# Z( V2,设置系统滴答时钟
) s0 ~! ^0 |# u7 M$ q2 u4 R; Q8 S0 }/ u$ v+ t# e: A
定义1ms中断。
) E8 d! u- z3 I9 m+ g
4 k/ D1 S* Q) b+ U) d$ c9 q4 n$ k中断处理函数,1s闪烁一次。
) x5 l. ?5 s6 d$ J: C# [; ^3,编译下载
% p& w# [6 Y) I1 h0 Q仿真器选择
& E3 s; Z; v) }5 }
; D7 I! M. ]& x直接download下载后程序运行部起来。通过仿真调试模式,点击三次运行按钮,程序正常运行。我初始化时钟也是这样,还未查明原因。 |
|