完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
**开发平台** : 正点原子 探索者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的值,确定输出状态,然后再取反,实现了每次输出会翻转的现象。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:07 , Processed in 0.915756 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号