基于stm32CubeMX点亮流水灯以及keil5的管脚波形分析

一、什么是HAL库

通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的。一般有使用标准库、HAL库和直接配置寄存器进行开发。HAL库是ST公司目前主力推的开发方式,全称就是Hardware Abstraction Layer(抽象印象层)。如果说标准库把实现功能需要配置的寄存器集成了,那么HAL库的一些函数甚至可以做到某些特定功能的集成,同样的功能,标准库可能要用几句话,HAL库只需用一句话就够了。并且HAL库也很好的解决了程序移植的问题,不同型号的stm32芯片它的标准库是不一样的,例如在F4上开发的程序移植到F3上是不能通用的,而使用HAL库,只要使用的是相通的外设,程序基本可以完全复制粘贴。

二、stm32CubeMX的安装

到下面的网站去下载安装包,安装jdk环境,因为STM32CubeMX是Java实现的。根据自己的实际情况选择版本。
https://www.oracle.com/java/technologies/downloads/
在这里插入图片描述
到下面的网站下载安装包,安装stm32CubeMX,根据自己的实际情况选择版本。一直点击next就可以了。
https://www.st.com/en/development-tools/stm32cubemx.html
在这里插入图片描述
运行stm32CubeMX,按照图示步骤安装固件库。在这里插入图片描述
选择对应的芯片型号STM32F1,选择1.60版本,点击install now
在这里插入图片描述
安装完成后就可以进行STM32的开发了。

三、点亮流水灯

1.具体步骤

1)点击file,新建工程,选择芯片型号STM32F103C8,开始工程。
在这里插入图片描述在这里插入图片描述
2)点击Pinout &Configuration ,配置系统调试接口SYS,选择 Serial Wire
在这里插入图片描述
外设资源选项:MCU的外设资源按A-Z排序,供用户选择使用。
外设设置:这里可以选择外设的各种功能。
引脚预览和系统预览:查看配置的各种外设的状态。只是两者的表达方式不同。引脚的颜色不同和不同图标都代表着不同的状态。

3)配置外设RCC,默认使用的内部RC振荡器。选择 HSECrystal/Ceramic Resonator(晶振/陶瓷谐振器),使用外部时钟源。
在这里插入图片描述
4)点击Cook Configuration ,按照下面的数值调整时钟树。
在这里插入图片描述
5)点击Pinout &Configuration,点击GPIO,在引脚预览图上点击要配置的引脚以及要配置的功能,此处选GPIO_Output。最后在中间的输出模式将Low改为High
在这里插入图片描述
依次配置PA5、PB0、PC14引脚。
在这里插入图片描述
6)点击Project Manager,配置工程文件。
在这里插入图片描述
4处一定要更改为与安装的Keil的版本一致的,否则利用keil分析串口输出的波形时将无法观测,出现no signal。

勾选 Generate peripheral ,将单独生成所配置外设的.c和.h文件。点击GENERATE CODE,将生成工程代码。
在这里插入图片描述
7)点击Open Project,即可在Keil上打开工程。
在这里插入图片描述
8)在main.c的while循环中添加以下代码,实现LED的周期性闪烁。下面用到了HAL库里的函数。

void HAL_Delay (__IO uint32_t Delay)
参数说明:Delay表示所要延时的时间大小,单位是毫秒。
void HAL_GPIO_WritePin(GPIO_TypeDef * GPIOx, uint16_t GPIO_Pin,GPIO_PinState PinState)
参数说明:GPIOx: 管脚组(x的取值为A~G);
GPIO_Pin: 管脚编号(x的取值为0~15);
PIN_State: 管脚的状态

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);
//写管脚函数,置0
HAL_Delay(100) ;//延时函数,单位是毫秒 
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET);
HAL_Delay(100) ;

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
HAL_Delay(100) ;
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_Delay(100) ;

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_RESET);
HAL_Delay(100) ;
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,GPIO_PIN_SET);
HAL_Delay(100) ;
}

9)编译运行,将生成的hex文件烧录进去芯片中,然后把电路接出来。

2.结果

在这里插入图片描述

四、管脚波形分析

1)点击魔法棒,点击Target,设置晶振的频率为72HZ。
在这里插入图片描述
点击Debug,勾选仿真器,根据自己使用的芯片型号修改下列框选的部分。
在这里插入图片描述
进入调试界面,点击逻辑分析仪,点击view,调出Symbol Window
在这里插入图片描述
在Symbol窗口中展开Special Function Registers,分别将GPIOA_IDR、GPIOB_IDR、GPIOC_IDR拖进逻辑分析仪。
在这里插入图片描述
点击逻辑分析仪的左上角Setup选项,将3个管脚设置展示类型为Bit
在这里插入图片描述
点击页面左上角的 Run 进行全速运行,运行一端时间后停止,滑动鼠标,可以看到3个GPIO端口的管脚波形。
在这里插入图片描述
从上面的波形可以看出,LED 的闪烁周期实际约为60ms(约三格,每格为2ms),与定义的100ms有差距。这样的时序波形符合流水灯的状态转换。

五、总结

stm32CubeMX允许我们使用图形化向导生成C 初始化代码,不像以前编程时需要经常翻阅手册,省去了我们配置各种外设的时间,大大的节省了时间。但是我们还是要从基本的外设原理开始学起,一步步打好基础操作的时候才知道从哪里下手。而根据仿真示波器的波形,即使在不接硬件的情况下,也可以判断代码是否正常,这可为我们调试带来了极大的便利。

六、参考资料

搭建STM32开发环境——STM32CubeMX,Keil5
STM32实现LED闪烁——基于HAL库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值