前言
下面对STM32G431进行模块化学习,本文先学习CubeMX的配置以及点灯操作。
1.CubeMx配置
1.1时钟源的选择
1.2时钟树的配置
HCLK一般取80(使用ADC的情况下)
1.3配置引脚
在产品手册中可以找到STM32G431的LED原理图,从下图可以看出,8颗LED灯通过74HC573驱动,LED灯采用低电平的方式点亮,控制引脚连PD2引脚。我们可以在PD2高电平的基础上,控制GPIO PC8 ~ PC15 的高低电平从而控制LED的亮灭。
在CubeMX的中依次配置PC8~PC15,以及PD2引脚
1.4文件配置
填写文件名字,选择MDK-ARM以及对应的版本(一般选最新版本就行)
到这里就算配置完成了,然后点击生成代码
然后打开工程
注意打开工程后如果弹出Keil Pack Installer
就表示你没有STM32G431的芯片包,keil在自动帮你下载。但是keil下载会特别慢,建议自己爬梯子下载好再重新打开工程。这里附上芯片包链接https://www.keil.arm.com/packs/stm32g4xx_dfp-keil/boards/
1.5工程配置
进工程后配置一下调适用器
然后可以调试,编写完代码按下载就可以了
2.代码编写
2.1代码编写步骤
首先了解在工程中编写代码的位置, 需要包含的头文件建议写在begin includes—ned includes之间,如下图
子函数建议写在code begin 0—end 0之间,如下图
main函数建议写在初始化后的begin 2 end 2和while(1)中的begin3 end3之间,如下图
2.2LED测试代码编写
本次只编写简单的LED测试代码,以下代码放入while(1)中。
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_9, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_11, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_12, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);
最后进行编译下载
3.代码编写方法二
配置完cube后打开工程,先在工程文件下建立一个新文件命名为bsp
然后打开keil在工程下新建一个群组,命名为bsp
然后Ctrl+N新建两个文本Ctrl+S分别命名为led.c和led.h,都另存在工程文件夹的bsp文件里,然后右击keil工程里的bsp组,添加led.c
编写led.h和led.c
在main.h里添加定义
在main.c包含头文件
初始化和程序编写
最后点击编译和上传