【STM32】基于STM32F4使用STM32CubeMX配合Keil点亮LED流水灯

一、搭建STM32开发环境

  1. 安装jdk
    由于STM32CubeMX是Java实现的,需要安装jdk环境。
    jdk官网下载链接:https://www.oracle.com/java/technologies/javase-downloads.html

  2. 安装STM32CubeMX
    下载地址:https://www.st.com/en/development-tools/stm32cubemx.html

  3. 具体安装过程详见
    https://blog.csdn.net/qq_43279579/article/details/112213196

二、使用寄存器地址方式点亮LED灯

(1)使用CubeMX生成相关代码

  1. 选择New Project
    在这里插入图片描述

  2. 选择芯片型号,并创建工程
    在这里插入图片描述

  3. 配置引脚功能
    在这里插入图片描述
      在右下角输入要设置的管脚。这里以将PF6设置为GPIO_Output为例,输入后中心芯片会有点变为绿色,这个点就是搜索的PF6
    在这里插入图片描述

      点击绿色的电,弹出一个下拉栏,选择GPIO_Output,左键单击后完成设置。
      同理地,搜索到PF7PF8,将其设置为GPIO_Output

  4. 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就可以了。

  5. 生成相关代码

    点击Project Manager,设置好工程名与文件位置
    在这里插入图片描述
    点击Generate Code
    在这里插入图片描述
    然后弹出一个窗口,Open FolderOpen 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等,大大缩短了我们的开发时间。

五、参考

搭建STM32开发环境——STM32CubeMX,Keil5

STM32学习笔记一——使用STM32CubeMX点亮一个LED灯/制作一个流水灯

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值