STM32初识---Keil5和CubeMX

硬件介绍

今天开始,学习比52更复杂的STM32系列单片机:

软件介绍 

1. Keil 5 及其 固件包

使用之前的Keil4写STM32代码其实也可以,但需要比较复杂的设置,而如果用Keil5会比较方便。

(这里在打开POJIE软件的时候总是会报错“ 无法成功完成操作 因为文件包含病毒或潜在的垃圾软件",因此参考了这篇博文解决Win11“无法成功完成操作,因为文件包含病毒或潜在的垃圾软件“_'零'Bug的博客-CSDN博客

另外安装的路径不要有中文!

安装完keil5和固件包之后打开keil5的界面:

小插曲:Keil怎样显示中文注释(简单 有图)_keil中文注释_小码1111的博客-CSDN博客

其实要Keil4一毛一样,只不过,对于32的编程不能像51那么简单,简单创建一个工程写个main就可以跑起来,STM32的模板工程

 在Keil5中长这样:

 mian中一些示例程序,将他编译之后,接下来就是烧录的方法了:

烧录其实有很多种方法,包括串口,J-Link,U-Link,ST-Link等,在这里我使用的烧录工具是ST-Link:

主要接的就是三根线,GND,SWCLKSWDIO。打开STM32最小系统的PCB图,查找SWCLKSWDIO就可以连接:

如图,即单片机的A13和A14分别和ST-Link的SWCLKSWDIO连接:

然后将ST-Link插入电脑的USB口之后,安装ST-Link的驱动:

右键STM32 STlink并选择“更新驱动程序”,并在电脑中找到驱动程序:

图标显示正常,说明安装成功!

 接下来回到Keil5进行下一步的配置:

点击这个图标:

选择“Debug”,选择“ST-Link Debugger":

选择“Output”,勾选上“Create HEX file”:

这就完成了设置,之后就可以进行程序的烧写

1. 点击Load,就可以把程序烧写进入STM32:

2. 没有报错之后,点击单片机右下角最左侧的“复位按钮”:

3. 此时程序已经成功烧写,可以观察到代码使得LED灯交替闪烁:

2. STM32CubeMX

 CubeMX可以通过界面的方式快速的生成工程文件,首先安装并打开:(其实这里推荐将固件包的位置改到除了C盘之外的其他盘,但是我就一个C盘没有分盘,所以就跳过了这一步)

使用STM32CubeMX生成工程文件:

1. 点击“ACCESS TO MCU SELECTOR”

2.  点击之后,在新生成页面的左上角输入具体的芯片型号并双击:

然后CubeMX就会基于这个芯片生成一个新的界面:

接下来就可以通过在这个界面的操作,自动生成对应的代码,比如我要进行一个点灯的操作

1. 同样,先通过STM32最小系统的PCB图,查找LED灯对应的电路:

 

可见LED1,2 分别接到了B8B9并且低电平灯亮高电平灯灭

2. 在CubeMX界面找到PB8和PB9的引脚,并左键点击:

 这其实就是引脚的复用,此处我希望点灯,那需要这个引脚行使“GPIO_Output”的功能:

此时,再点击左边的GPIO选项,就可以看到设置的引脚,并且CubeMX已经自动进行了一些初始化的配置了

 此时再点击PB8或PB9就可以进行进一步的设置:

 例如,可以设置

输出的是高电平还是低电平

输出的模式是“推挽输出”还是“开漏输出

是否要拉高或者拉低

最大传输速度

用户给的标签

3. 点击左侧的“SYS”选项,在“Debug”中选择“Serial Wire” (串口)

 

 如此一来,就可以进行一些重复的修改。

4. 点击上侧偏右的“Project Manager”大选项进行设置:

注意,项目的路径不能有中文!!这里我在C盘创建了一个新的‘ mjm_CubeMX_proj 文件夹用于保存Cube的项目文件:(Toolchain/IDE别忘了设置成MDK-ARM,这样在项目生成之后会自动调用Keil)

5. 同样在“Project Manager”大选项下,左侧的“Code Generator”中这样设置:

6. 最后,点击右上角的“GENERATE CODE” :

7. 生成完成之后,点击中间的“Open Project”:

此时就会自动调用Keil5打开:

8. 注意,先进行编译:

9. 按照STM32的烧写步骤,先点击LOAD,再点击单片机的复位:

可见LED1,2对应的D3,D5两盏灯常亮,说明CubeMX生成的代码没有问题!

既然代码没问题,那么现在可以回过头来看一下Cube到底生成了啥代码:

主要观察main函数:

发现就是在初始化,如果选中并右键点击这些调用的初始化函数,就可以跳转到这些函数定义的地方:

 

 其中下图这条语句就是亮灯的关键:

通过再次跳转这个函数查找定义之后就可以知道,这是一个写数据的函数,上图中是往GPIO口的8和9口写“0”,而经过刚刚的分析,LED灯低电平亮灯,所以这句话可以点灯。

那么既然知道了这个函数的作用,那就可以把这句话稍微修改然后复制到main函数的while 1循环中:

 while (1)
  {
    /* USER CODE END WHILE */
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET); //8口对应的LED亮
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_SET); //9口对应的LED灭
		HAL_Delay(1000);//HAL_Delay函数以毫秒为单位,这里delay 1 秒
		
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET); //8口对应的LED灭
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_9, GPIO_PIN_RESET); //9口对应的LED亮
		HAL_Delay(1000);//HAL_Delay函数以毫秒为单位,这里delay 1 秒
		
    /* USER CODE BEGIN 3 */
  }

将代码烧录:

这就是最简单的,通过Cube代码进行二次开发,实现跑马灯的尝试。

同时,通过这个示例也可以看到CubeMX不是万能的,Cube只能生成初始化的代码,至于具体项目中main函数中具体的实现,还是要自己敲的!

  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
en.stm32cubemx-win-v6-9-1是一个针对STMicroelectronics的STM32微控制器系列的软件工具。这个软件工具可在Windows操作系统上使用,其版本号为6.9.1。 STM32微控制器系列是STMicroelectronics推出的一种低功耗、高性能的微控制器芯片系列。这些微控制器芯片广泛用于嵌入式系统、物联网设备、工业自动化以及各种电子产品中。STM32微控制器系列有多个不同的型号和系列,每个型号都有不同的功能和性能特点。 en.stm32cubemx-win-v6-9-1是用于STM32微控制器系列的软件工具。它具有通过图形化界面进行配置和生成代码的功能,使得开发人员可以更加方便地进行STM32微控制器的软件开发。通过这个软件工具,开发人员可以选择不同的模块、外设和功能,然后生成相应的初始化代码。这个软件工具还可以提供一些自动生成的模版,使得开发人员可以快速开始开发。 除了代码生成外,en.stm32cubemx-win-v6-9-1还提供了一些其他功能。例如,它可以通过图形化界面配置时钟树、引脚映射、中断优先级等。此外,该软件工具还可以集成其他开发环境,例如Keil或IAR,以便更直接地进行代码编辑和编译。 总而言之,en.stm32cubemx-win-v6-9-1是一个用于STM32微控制器系列的软件工具,它提供了图形化界面配置和生成代码的功能,帮助开发人员更方便地进行STM32微控制器的软件开发。它是一个很有用的工具,可以提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值