GD32学习总结

系列文章目录

GD32F10X系列单片机学习基于官方例程及数据手册学习心得



前言

因为个人兴趣及近来进口芯片的不稳定因素,也同时提升下自己,将一个汽车用的STM系列更换为GD系列单片机,进行程序的移植,移植前我习惯性的对单片机的各个性能进行调试,当然首先从最基本的输入输出进行了解(LED,KEY,USART,UART,CAN,FREERTOS,PWM,TIM,USBFS等)在这做个学习记录,希望有兴趣的朋友们可以一起讨论学习,不对之处敬请谅解,并给予指点。


一、LED、KEY官方例程的学习

官方例程中将LED及KEY封装至一个数组内,再对数组进行操作,以LED为例:

二、使用步骤

1.引入如下数组:

代码如下(示例):
/* private variables */
static uint32_t GPIO_PORT[LEDn] = {LED0_GPIO_PORT,LED1_GPIO_PORT,LED2_GPIO_PORT,LED3_GPIO_PORT,LED4_GPIO_PORT,LED5_GPIO_PORT,LED6_GPIO_PORT
,LED7_GPIO_PORT,LED8_GPIO_PORT,LED9_GPIO_PORT,LED10_GPIO_PORT,LED11_GPIO_PORT,LED12_GPIO_PORT};
static uint32_t GPIO_PIN[LEDn] = {LED0_PIN,LED1_PIN,LED2_PIN,LED3_PIN,LED4_PIN,LED5_PIN,LED6_PIN,LED7_PIN,LED8_PIN,LED9_PIN,LED10_PIN,LED11_PIN,LED12_PIN};

这种方法属于集中式管理,但用惯了HAL库,转到这里觉得有点受限制了,感觉还是HAL官方软件生成的代码方便,随便用,实际上这里不封装也是可以的,因为gd_eval_led_init()才是根本,我把只要这种初始化,把每个IO按自己的想法封装下就OK了

2.IO操作部分代码

代码如下(示例):

void  gd_eval_led_init (led_typedef_enum lednum)
{
    /* enable the led clock */
    rcu_periph_clock_enable(GPIO_CLK[lednum]); //IO频率这里的GPIO_CLK[lednum]不用数组时也就是RCU_GPIOX
    /* configure led GPIO port */ 
    gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN[lednum]);//IO口模式速度设置,这里也就是想当于GPIOX和GPIO——PIN——X脚的功能设置

    GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];//最后设置输出低电平,GPIO——BOP是指输出高电平。 
}

总结

其实万变不离其宗,IO口是单片机里内最基本的操作,也是最常用到的,我们可以根据自己习惯结合数据手册自习操作,达到自己满意的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樊城虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值