第二周-GD32F4XX的配置和函数归纳(2)

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位域值决定)分频提供。

/* configure the PLL clock source selection and PLL multiply factor */
ErrStatus rcu_pll_config(uint32_t pll_src, uint32_t pll_psc, uint32_t pll_n, uint32_t pll_p, uint32_t pll_q);
/* configure the PLLI2S clock */
ErrStatus rcu_plli2s_config(uint32_t plli2s_n, uint32_t plli2s_r);
/* configure the PLLSAI clock */
ErrStatus rcu_pllsai_config(uint32_t pllsai_n, uint32_t pllsai_p, uint32_t pllsai_r);
/* configure the RTC clock source selection */
void rcu_rtc_clock_config(uint32_t rtc_clock_source);
/* cconfigure the frequency division of RTC clock when HXTAL was selected as its clock source */
void rcu_rtc_div_config(uint32_t rtc_div);

2.2 库文件的结构




就在我还继续一个函数一个函数看的时候,突然发现在这层寄存器配置是最底层,在这之上,也已经有了简化配置的函数可以直接调用。部分需要寄存器配置的可以在用到的时候找到头文件查看函数,提高效率。

在这里插入图片描述
还有一个补充库(大杂烩)
在这里插入图片描述
其中28个寄存器如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值