GD32F4XX的配置和函数归纳(2)
1.在keil上建立工程文件,调试设置,编译成功 2.总结编译调试烧录的过程 3.归纳软件程序的结构关系 4.下周继续通过实例来熟悉单片机的配置
1.编译、烧写情况
1.1 编译设置
1. 问题一
这里将遇到的问题总结出来,首先是出现这种情况 原因是程序运行目录有中文,需要将环境变量的TMP设置成自己创的一个英文目录
2.问题二
第二个问题是想要尝试用printf在keil中打印变量或字符串,但是失败了 查看手册后,发现编译环境调成该芯片,所以需要调用该芯片的通用同步异步收发器(USART)调用单片机的输出数据
1.2 .keil的设置
第三个问题就是配置问题,但是官网例程有个现有的工程已经设置好keil。可以直接链接、编译、生产**“hex.h”**文件
1.如遇创建新工程,需要先在keil的设备选项中加入该单片机型号 这个选项的GD32F4XX Devices不在keil的默认设备中,需要添加官网给出该类系列单片机设备的安装 2.要设置,可以生成**".hex"**文件,这个文件可以烧进单片机中进行运行 3.语言的预处理也要设置为该设备的环境 4.GD-LINK是将单片机与电脑连接,通过串口通信,但是这周一致没有连接成功,可能是单片机没有配电成功,需要下次尝试。
2.寄存器配置及函数表示
2.1 RCU(时钟和复位单元)
1.初始化RCU寄存器
void rcu_deinit(void)
2.打开/关闭某个外设的时钟,当睡眠状态下打开/关闭某外设的时钟
void rcu_periph_clock_enable(rcu_periph_enum periph)
void rcu_periph_clock_disable(rcu_periph_enum periph)
void rcu_periph_clock_sleep_enable(rcu_periph_sleep_enum periph)
void rcu_periph_clock_sleep_disable(rcu_periph_sleep_enum periph)
3.可以/不可以重启某个外设
void rcu_periph_reset_enable(rcu_periph_reset_enum periph_reset)
void rcu_periph_reset_disable(rcu_periph_reset_enum periph_reset)
3.实时时钟-备份寄存器的使能开关
void rcu_bkp_reset_enable(void)
void rcu_bkp_reset_disable(void)
4.选择/输出系统时钟的来源
void rcu_system_clock_source_config(uint32_t ck_sys)
uint32_t rcu_system_clock_source_get(void)
5.AHB/APB1/APB2的分频选择
void rcu_ahb_clock_config(uint32_t ck_ahb)
void rcu_apb1_clock_config(uint32_t ck_apb1)
void rcu_apb2_clock_config(uint32_t ck_apb2)
6.设置时钟输出的时钟源和分频选择
void rcu_ckout0_config(uint32_t ckout0_src, uint32_t ckout0_div)
void rcu_ckout1_config(uint32_t ckout1_src, uint32_t ckout1_div)
7.PLL时钟源的配置 PLL时钟源可选HXTAL或IRC16M; PLL存在三个内部锁相环,PLL、PLLI2S和PLLSAI。 PLLP时钟可做为系统时钟(不超过200MHz),PLLQ时钟可以做为USBFS/USBHS/TRNG/SDIO模块的时钟源。 RTC时钟可以选择由LXTAL时钟、IRC32K时钟或HXTAL时钟的2-31(由RCU_CFG0寄存器的RTCDIV位域值决定)分频提供。
ErrStatus rcu_pll_config(uint32_t pll_src, uint32_t pll_psc, uint32_t pll_n, uint32_t pll_p, uint32_t pll_q);
ErrStatus rcu_plli2s_config(uint32_t plli2s_n, uint32_t plli2s_r);
ErrStatus rcu_pllsai_config(uint32_t pllsai_n, uint32_t pllsai_p, uint32_t pllsai_r);
void rcu_rtc_clock_config(uint32_t rtc_clock_source);
void rcu_rtc_div_config(uint32_t rtc_div);
2.2 库文件的结构
就在我还继续一个函数一个函数看的时候,突然发现在这层寄存器配置是最底层,在这之上,也已经有了简化配置的函数可以直接调用。部分需要寄存器配置的可以在用到的时候找到头文件查看函数,提高效率。
还有一个补充库(大杂烩) 其中28个寄存器如下:
|