首先创建LED和LED_test两个文件夹,一个用于存放自己编写的工程文件,一个用于存放STM32CubeMX生成的工程。
接着打开 STM32CubeMX点击图中按钮进入到选型界面,可能会有下载更新的弹窗,耐心等待即可。
在搜索框输入stm32g431rb会出现两个选项,选择STM32G431RBTx为我们的目标型号。
进入后先对RCC时钟进行配置,在高速时钟处选择晶体\陶瓷晶振,也就是外部晶振,选择后会看到芯片的两个引脚变成绿色。
接着查看官方提供的CT117E-M4产品手册找到 7.4 LED指示灯
查看原理图,八个LED指示灯由PC8-PC15这八个IO口控制,当IO口输出低电平时LED灯被点亮,输出高电平时LED熄灭。同时需要注意,使用了74HC573锁存器,只有在LE引脚为高电平时右端IO口的电平信号才会被传输到左端送给LED灯,所以在控制LED灯时要记得把LE引脚拉高后再拉低。
下面进入STM32CubeMX开始配置LED的GPIO。依次点击GPIO->PC8->GPIO_Output
即可将PC8作为一个输出IO口。
随后对PC9-PC15以及PD2进行同样的操作
下面开始配置IO口,点击中间的PC8即可对PC8进行配置,将其初始化为高电平,这样上电时LED处于不亮的状态,下面的几个选项分别为推挽输出、没有上拉和下拉、低速(默认即可),依次对PC9-PC15进行同样的设置,最后对PD2(即LE)需要初试化为低电平,这样刚上电时无法对LED的IO口进行控制。
下面开始时钟频率的配置,依照下图顺序即可将时钟频率配置为80MHz
下面进行文件保存的设置,
依次是进行命名LED_test,保存到我们新建的文件夹里面,应用程序结构选择Basic,使用的软件选择MDK-ARM(即keil,版本对照自己的版本进行选择,这里我是v5 )
随后进行代码的设置,②为包含所有的库文件,③为生成独立的.c以及.h文件,最后点击④生成工程文件。
打开工程编译后发现有一个错误,报此错误的原因是没有启动文件,有的时候STM32CubeMX会生成对应的启动文件,有的时候不会生成,不管有没有生成都需要自行进行添加。
如果已经生成了,会在工程目录下面,只需要双击①处将②中文件加入即可。
如果没有生成启动文件则需要找到官方提供液晶驱动例程找到startup_stm32g431xx.s,一般路径是 资源数据包_嵌入式(G431)_2021\5-液晶驱动参考例程\HAL_06_LCD\MDK-ARM\startup_stm32g431xx.s
将其复制到我们刚刚生成的工程文件中,然后用上面的步骤将其添加到工程当中。
返回keil,在main函数中写下如下几行代码即可得到闪烁的LED灯。
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END 3 */
}
最后我们需要进行下载设置,点击菜单栏的小魔法棒
在Debug中选择CMSIS-DAP Debugger,随后点击Settings
在Falsh Download中将Reset and Run勾选上,这样程序下载进入单片机后会自动复位然后运行。
将程序下载进单片机,得到闪烁的小灯。