一、搭建STM32开发环境
-
安装jdk 由于STM32CubeMX是Java实现的,需要安装jdk环境。 jdk官网下载链接:https://www.oracle.com/java/technologies/javase-downloads.html -
安装STM32CubeMX 下载地址:https://www.st.com/en/development-tools/stm32cubemx.html -
具体安装过程详见 https://blog.csdn.net/qq_43279579/article/details/112213196
二、使用寄存器地址方式点亮LED灯
(1)使用CubeMX生成相关代码
-
选择New Project -
选择芯片型号,并创建工程 -
配置引脚功能 ??在右下角输入要设置的管脚。这里以将PF6 设置为GPIO_Output 为例,输入后中心芯片会有点变为绿色,这个点就是搜索的PF6 ??点击绿色的电,弹出一个下拉栏,选择GPIO_Output ,左键单击后完成设置。 ??同理地,搜索到PF7 、PF8 ,将其设置为GPIO_Output 。 -
GPIO 相关设置
GPIO output level:有low和high两种选择,一般选择low GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示GND;开漏输出中1代表高阻态,0代表GND。 GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉 Maxinum output speed:最大的输出速度,一般选择low就可以了。
-
生成相关代码 点击Project Manager ,设置好工程名与文件位置 点击Generate Code 然后弹出一个窗口,Open Folder 和Open Project 应该都可以。我这里用的前者,然后在子文件夹MDK-ARM 里找到了生成的keil5文件LED.uvprojx。
(2)修改Main函数
打开生成的keil5文件,找到 main.c ,然后在代码区大概找到int main() 代码是STM32CubeMX 自动生成的,需要把 while(1 里面的内容替换掉,替换内容如下:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
GPIOF->ODR &= ~(1<<6);
GPIOF->ODR |= 1<<7;
GPIOF->ODR |= 1<<8;
HAL_Delay(500);
GPIOF->ODR |= 1<<6;
GPIOF->ODR &= ~(1<<7);
GPIOF->ODR |= 1<<8;
HAL_Delay(500);
GPIOF->ODR |= 1<<6;
GPIOF->ODR |= 1<<7;
GPIOF->ODR &= ~(1<<8);
HAL_Delay(500);
}
}
编译并烧录验证 编译无误,使用FlyMcu 进行烧录 烧录成功 成功通过寄存器地址方式用GPIO端口 完成3只LED红绿灯的周期闪烁!
三、使用HAL库点亮LED灯
(1)使用CubeMX生成相关代码
该过程与使用寄存器地址方式点亮LED灯步骤一致。
(2)修改Main函数
打开生成的keil5文件,找到 main.c ,然后在代码区大概找到int main() 代码是STM32CubeMX 自动生成的,需要把 while(1 里面的内容替换掉,替换内容如下:
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_8,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOF,GPIO_PIN_8,GPIO_PIN_RESET);
HAL_Delay(500);
}
}
编译并烧录验证 编译无误,使用FlyMcu 进行烧录 烧录成功 成功通过HAL库 方式用GPIO端口 完成3只LED红绿灯的周期闪烁
四、总结
??STM32CubeMx软件是ST公司为STM32系列单片机快速建立工程,并快速初始化使用到的外设、GPIO等,大大缩短了我们的开发时间。
五、参考
搭建STM32开发环境——STM32CubeMX,Keil5
STM32学习笔记一——使用STM32CubeMX点亮一个LED灯/制作一个流水灯
|