STM32G4 蓝桥杯嵌入式 入门流水灯

 初学G431这块板子的时候,用的是STM32cubeMX 和keil-MDK ,在百度上搜到的全是标准库的代码,但是cubeMX用的是HAL库 代码很不一样,而且对于引脚的初始化,标准库的方式需要手动进行配置,但如果使用cubeMX的话,所有初始化配置都由代码转变成可视化图形。

使用这两个软件进行开发

 G431的板子上自带了DAP转串口,只要接上电脑就可以使用(win10);

 在写流水灯代码之前 我们要下载G431的固件包 这些网上教程其实已经非常详细了。

下面说说几个要注意的地方,

 一定一定要学会查产品手册,因为我们想要控制LED灯,就必须知道控制LED的引脚是哪几个

可以看到板子上的八个LED灯被引脚PC8-PC15控制,下一步就可以打开cubeMX进行配置了

 打开cubeMX,按步骤操作

选择相应芯片

 依次选择PC8-PC15引脚为GPIO_OUTPUT(对应LD1-LD8)

设置sys为sw模式,这里不懂跟着做就ok

 设置项目名称以及调整开发环境为MDK-ARM,完成后点击GENERATE CODE创建工程文件

 在stm32cube内的设置在main.c内已经初始化完毕,双击打开

这里面已经写好了所有GPIO初始化代码,我们只需要写上用户自己的代码即可

用户个人代码一定要在这两行注释之间进行编写,否则再次通过stm32cube修改初始化配置后,个人代码将被覆盖删除

用户代码如下

使用HAL_GPIO_WritePin()函数对引脚的输出电平进行控制,分析产品手册中电路可知,低电平时LED点亮,高电平时LED熄灭

使用HAL_Delay()进行延时  具体语法可以查看stm32g4xx.gpio.c文件查看。

 用户代码在末尾有

这里需要调用两个函数 HAL_GPIO_WritePin()和 HAL_Delay()

HAL_GPIO_WritePin()的作用是改变引脚输出的电平。

HAL_Delay()的作用是延时 单位是毫秒;


代码编写完成后,点击bulid按钮进行编译,如程序编写无错误,编译完成后即可烧录至电路板中运行

 这里讲一下debug的配置

点击魔术棒后 选择debug  

 在下拉菜单中选择DAP

 然后点击旁边的settings按钮,可以看到我们的板子,选择flash download

 勾上这个,这样程序一下载就可以自己跑,不用手动按复位键

 设置好这些就可以直接下载程序了。



附上流水灯代码(写在while(1)里面):

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,0);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,1);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,0);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,1);
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,0);
HAL_Delay(1000);
 

  • 11
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值