STM32LL库系列教程(二)——点亮LED灯

 **开发平台**  :  
 正点原子  探索者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的值,确定输出状态,然后再取反,实现了每次输出会翻转的现象。
在这里插入图片描述

**感谢观看!**
发布了21 篇原创文章 · 获赞 2 · 访问量 2841

猜你喜欢

转载自blog.csdn.net/lalala12ll/article/details/103684967