STM32
直播中

世态薄凉

8年用户 1117经验值
私信 关注
[问答]

如何去实现一种基于STM32LL库点亮LED灯的设计

配置cubemx的步骤有哪些?

如何去实现一种基于STM32LL库点亮LED灯的设计?

回帖(1)

李雪萧

2021-9-28 17:35:39
  **开发平台** : 正点原子 探索者STM32F407ZET6 cube mx:V 5.1.0 keil uVision5
  注意:本教程默认读者已经对stm32和cubemx软件有一定了解;为节省篇幅,详细配置cubemx的步骤仅在此篇中说明,以后仅会简略介绍配置相关内容。
  STM32LL库系列教程(二)——点亮LED灯实验目的:学习cubemx LL库的配置方法;学会操作GPIO相关寄存器BSRR、ODR实验现象:LED1每秒翻转一次;LED2每0.5秒翻转一次
  下面开始配置cubemx,来进行程序的初始化。
  1. 配置cubemx
  1.1 配置时钟
  RCC——HSE——Crystal/Ceramic Resonator(晶体/陶瓷谐振器)选择外部晶振
  
  Clock Configuration——晶振频率选8M,与开发板相对应,主频开到最大168M
  
  1.2 配置GPIO
  板子上的LED为PF9、PF10控制,选择GPIO_Output
  
  1.3 工程配置
  1.3.1 选择keil
  
  1.3.2 优化工程选项
  
  1.3.3
  *******重点:cubemx默认生成的是hal库的工程,必须在这里修改才能使用LL库 *******有趣的是hal库和ll库是可以相互兼容的,可以单独给某个外设配置ll库或hal库
  
  自此,对本工程的初始化就完成了。
  下面开始编写代码,并介绍控制GPIO相关寄存器
  2. 编写代码
  代码很简单
  在while(1)中自行添加这样几行
  
  从名字中,不难看出这几行代码的作用,而在LL库本身的库文件中也有介绍他的作用:
  
  
  
  因而,想对LL库得心应手,就必须要经常看一看库文件以及参考手册。
  回到上文,在这三个函数中,我们发现LL库,基本上都是通过static inline内联函数来操作寄存器,这样代码的效率可想而知。那BSRR和ODR是什么呢,让我们翻一下STM32F4xx中文参考手册
  3.相关寄存器介绍
  3.1 GPIO 端口置位/复位寄存器 (GPIOx_BSRR) (x = A…I)
  首先是`BSRR`S、R顾名思义,即置位,复位。因此,对R写1,就是复位,该GPIO会输出0;
  对S写1,就是置位,输出高电平,而且,S优先级更高。所以,对这个寄存器写数,就会改变GPIO的状态,从而,灯会闪烁。
  
  3.2 GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A…I)
  下面是ODR,这同样也是一个可以通过写入来改变GPIO状态的寄存器,
  与BSRR比较大的区别就是,它可以直接对一位写0或1,控制输出;且,ODR的数是可以读出来的。
  因此在函数LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask);
  是先读取ODR的值,确定输出状态,然后再取反,实现了每次输出会翻转的现象。
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分