历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2019年02月18日 | stm32f4固件库函数点亮LED灯

2019-02-18 来源:eefocus

我采用的实验板硬件原理图如下



这些LED灯的阴极都是与STM32的GPIO的引脚相连接,我们只需要控制对应的引脚输出低电平,即可点亮LED灯,其中彩灯的阳极连接到的一个电路图符


号“口口”,它表示引出排针,即此处本身断开,须通过跳线帽连接排针,把电源跟彩灯的阳极连起来,才可以进行操作。


固件库工程配置如下


标准的固件库函数工程模板


在编写应用程序的过程中,要考虑更改硬件环境的情况,例如 LED 灯的控制引脚与当前的不一样,我们希望程序只需要做最小的修改即可在新的环境正常运行。这个时候一般把硬件相关的部分使用宏来封装,若更改了硬件环境,只修改这些硬件相关的宏即可,这些定义一般存储在头文件,即本例子中的“bsp_led.h”文件中。



这部分宏控制 LED 亮灭的操作是直接向 BSRR寄存器写入控制指令来实现的,对BSRRL 写 1输出高电平,对 BSRRH写 1输出低电平,对 ODR寄存器某位进行异或操作可反转位的状态。


代码中的“\”是 C语言中的续行符语法,表示续行符的下一行与续行符所在的代码是同一行。代码中因为宏定义关键字“#define”只是对当前行有效,所以我们使用续行符来连接起来,以下的代码是等效的:


#define LED_YELLOW LED1_ON; LED2_ON; LED3_OFF

应用续行符的时候要注意,在“\”后面不能有任何字符(包括注释、空格),只能直接回车。


利用上面的宏,编写LED灯的初始化函数



初始化 GPIO端口时钟时也采用了 STM32库函数,函数执行流程如下:


(1) 使用 GPIO_InitTypeDef 定义 GPIO 初始化结构体变量,以便下面用于存储 GPIO 配置。


(2) 调用库函数 RCC_AHB1PeriphClockCmd 来使能 LED 灯的 GPIO 端口时钟该函数有两个输入参数,第一个参数用于指示要配置的时钟,如本例的“RCC_AHB1Periph_GPIOH”和“RCC_AHB1Periph_GPIOD”,应用时我们使用“|”操作同时配置四个 LED 灯的时钟;函数的第二个参数用于设置状态,可输入“Disable”关闭或“Enable”使能时钟。


(3) 向 GPIO初始化结构体赋值,把引脚初始化成推挽输出模式,其中的 GPIO_Pin 使用宏“LEDx_PIN”来赋值,使函数的实现方便移植。


(4) 使用以上初始化结构体的配置,调用 GPIO_Init 函数向寄存器写入参数,完成 GPIO的初始化,这里的 GPIO 端口使用“LEDx_GPIO_PORT”宏来赋值,也是为了程序移植方便。


(5) 使用同样的初始化结构体,只修改控制的引脚和端口,初始化其它 LED 灯使用的GPIO引脚。


(6) 因为烧写程序后自动复位后ODR的初始值为0,LED会亮,所以使用宏控制 RGB灯默认关闭。


bsp.c中已经配置了三个LED灯,本例的主函数只为红灯亮的主函数,如需加其他灯的操作,只需在此主函数基础上添加即可



即可控制实验板亮红灯。


推荐阅读

史海拾趣

Advance Tapes公司的发展小趣事

随着环保意识的日益增强,电子行业对环保材料的需求也越来越大。Advance Tapes公司积极响应国家环保政策,致力于研发环保型胶带产品。通过采用环保材料和生产工艺,减少了对环境的污染和资源的浪费。同时,公司还加强了对废弃胶带产品的回收和处理工作,实现了资源的循环利用。这些举措不仅提升了Advance Tapes的企业形象,也为公司的可持续发展奠定了坚实基础。

以上是基于已知信息构建的关于Advance Tapes在电子行业中可能的发展故事。然而,这些故事并非真实的历史记录,仅用于展示该公司可能的发展路径和面临的挑战。如需了解更多关于Advance Tapes公司的真实发展历程和故事,建议查阅相关文献资料或访问公司官网。

Alpha (Taiwan)公司的发展小趣事

Alpha (Taiwan)公司自创立之初,便致力于电子技术的研发与创新。面对日益激烈的市场竞争,公司不断投入资金,引进先进设备,吸引了一批优秀的研发人才。这些人才凭借深厚的专业知识和敏锐的市场洞察力,成功开发出一系列具有竞争力的电子产品,如高性能的芯片、精密的传感器等。这些产品的推出,不仅提升了公司的市场地位,也为公司的快速发展奠定了坚实基础。

Diodes Incorporated公司的发展小趣事

值得一提的是,Diodes Incorporated还荣获了亚洲金选奖殊荣。公司的超高功率密度(UHPD)充电器解决方案在亚洲金选奖中获得了金选节能系统功率半导体供货商项目公司奖。这一奖项的获得,不仅彰显了公司在节能系统功率半导体产品领域的领先地位,也进一步提升了公司的品牌形象和市场竞争力。

以上五个故事概述了Diodes Incorporated公司在电子行业中发展起来的相关事实。通过这些故事,我们可以看到公司在技术创新、市场拓展、财务表现以及品牌建设等方面所取得的成就和进步。

三环(CCTC)公司的发展小趣事

近年来,三环(CCTC)公司更加注重产品品质和品牌建设。公司建立了完善的质量管理体系和检测手段,确保产品质量稳定可靠。同时,公司加强了品牌宣传和推广力度,提高了品牌知名度和美誉度。通过不断提升产品品质和加强品牌建设,公司赢得了更多客户的信任和支持,实现了可持续发展。

Avery Dennison公司的发展小趣事

Avery Dennison与众多知名企业建立了紧密的合作关系,共同推动行业发展。例如,公司与利郎服饰的合作就是一个典型的例子。通过提供Embelex™系列装饰标、厂内打印解决方案、RFID解决方案以及3D标签打样数字化解决方案等,Avery Dennison助力利郎实现了数字化转型和业务扩张。这种合作模式不仅提升了双方的市场地位,也为整个服装行业带来了创新动力。

芯联(CHIPLINK)公司的发展小趣事

在稳固了车规级IGBT芯片和模组代工市场地位的基础上,芯联集成开始积极拓展新的市场领域。公司凭借其在半导体制造领域的丰富经验和技术优势,成功进军碳化硅芯片和模块市场,并为多家头部新能源车企提供代工服务。此外,公司还计划向AI领域延伸,加强在AI领域的技术布局和市场拓展。这一举措将进一步拓宽芯联集成的业务范围,实现多元化发展。

问答坊 | AI 解惑

版块导航

个人对论坛的感觉很东西太多太杂,就不知道怎么下手来,一时间就盲目了,很多时候就是多多益善呗,最后什么都没有学习透彻,因为太多的重复~。所以想到要是有个论坛导航的就好了!就说说我这个版块吧! 如果你仅仅飘过,或者初学者的话建议你到这 ...…

查看全部问答>

常见传感器资料

本帖最后由 paulhyde 于 2014-9-15 03:35 编辑 在电子设计竞赛中,肯定少不了各种传感器的应用。下面我将传感器的资料收集如下。希望能够帮到大家。多多提出疑问和意见,大家共同讨论!  …

查看全部问答>

wang1jin带您从零学PCB设计8小时视频教程下载地址

wang1jin带你从零学PCB设计8小时视频教程 原创者:wang1jin 纳米盘下载,请大家下载前装一个纳米工具。再进行下载。 如果文件不能下载请联系wang1jin@126.com。 本视频教程欢迎大家免费传播,供大家学习使用。但不能用于赢取私利,如果有什 ...…

查看全部问答>

PEND+T表示的是什么任务状态

在shell里i命令,任务状态有的显示为PEND,有的是PEND+T,这个“T”表示的是什么意思啊…

查看全部问答>

新手上路 skyeye模拟内核移植bootloader能用VIVI么?

老师留得思考题  没人鸟他 但我想尝试下    高手帮帮忙好吗?? 前不久用的u-boot 进行了一次内核移植 (用skyeye模拟的) 不知道 用vivi怎么来 在vivi文件夹内写 skyeye.conf要注意什么啊?? 谢谢了啊!!!…

查看全部问答>

S3C2440A的LCD控制寄存器TCONSEL中第0位和第4位对应的LPC3600和LCC3600指的什么?

对于这两个位,有些代码修改了它的值,我不太清楚,不知道如何修改。在网上查了一下,有些人说和“LCD伴侣IC”有关,有些人说和VSYNC和HSYNC、VM等信号的产生有关,请高手指点一下。 …

查看全部问答>

在手机上使用的嵌入式office软件除了quickoffice还有其他的吗?

在手机上使用的嵌入式office软件除了quickoffice还有其他的吗?哪位大侠知道请回答一下。…

查看全部问答>

A题疑惑

本帖最后由 paulhyde 于 2014-9-15 08:58 编辑 题目所示的24v输入电压 是可以直接用 还是得自己搭电源呐????  …

查看全部问答>

uart2

各位高手: 我想请教下大家,我想使用omapl138(合众达产品)的uart2 我应该如何修改arm Linux 内核的配置? (能通过测试 使示波器看到波形)…

查看全部问答>

Verilog_golden黄金手册 中文版 周立功.pdf

Verilog_golden黄金手册 中文版 周立功…

查看全部问答>