目录
一、搭建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); //操作PF6,设置为高电平
GPIOF->ODR |= 1<<7; //操作PF7,设置为低电平
GPIOF->ODR |= 1<<8; //操作PF7,设置为低电平
HAL_Delay(500);//延时500毫秒
GPIOF->ODR |= 1<<6; //操作PF6,设置为低电平
GPIOF->ODR &= ~(1<<7); //操作PF7,设置为高电平
GPIOF->ODR |= 1<<8; //操作PF7,设置为低电平
HAL_Delay(500); //延时500毫秒
GPIOF->ODR |= 1<<6; //操作PF6,设置为低电平
GPIOF->ODR |= 1<<7; //操作PF7,设置为低电平
GPIOF->ODR &= ~(1<<8); //操作PF8,设置为高电平
HAL_Delay(500); //延时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); //延时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); //延时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); //延时500毫秒
}
}
编译并烧录验证
编译无误,使用FlyMcu
进行烧录
烧录成功
成功通过HAL库
方式用GPIO端口
完成3只LED红绿灯的周期闪烁
四、总结
STM32CubeMx软件是ST公司为STM32系列单片机快速建立工程,并快速初始化使用到的外设、GPIO等,大大缩短了我们的开发时间。