历史上的今天
返回首页

历史上的今天

今天是:2025年12月09日(星期二)

正在发生

2022年12月09日 | STM32标准库编程之LED闪烁

2022-12-09 来源:zhihu

【1】工程截图


【2】代码解读

有了前面文章的基础,工程建立我不再赘述,我们来看主函数所在的源文件(这里完全可以把开头的宏定义和函数声明放到同名的头文件中)。

这里我只引用了delay.h和sys.h

可以看到这三个文件放到一个文件夹里,说明他们三个比较特殊,这里就详细介绍一下(辅助编程文件夹里的开发指南里说的很详细)。SYSTEM 文件夹下包含了 delay、 sys、 usart 等三个文件夹。分别包含了 delay.c、 sys.c、 usart.c及其头文件。通过这 3 个 c 文件,可以快速的给任何一款 STM32F1 构建最基本的框架。使用起来是很方便的。

delay 延时的编程思想: CM3 内核的处理器,内部包含了一个 SysTick 定时器, SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。只要不把它在 SysTick 控制及状态寄存器中的使能位清除,就永不停息。 SysTick 在《STM32 中文参考手册》(这里是指 V10.0版本,下同) 里面介绍的很简单,其详细介绍,请参阅《Cortex-M3 权威指南》第 133 页。【我们就是利用 STM32 的内部 SysTick 来实现延时的,这样既不占用中断,也不占用系统定时器。】

sys 文件夹内包含了 sys.c 和 sys.h 两个文件。在 sys.h 里面定义了 STM32 的 IO 口输入读取宏定义和输出宏定义。 sys.c 里面只定义了一个中断分组函数。


usart 文件夹内包含了 usart.c 和 usart.h 两个文件。这两个文件用于串口的初始化和中断接收。这里只是针对串口 1,比如你要用串口 2 或者其他的串口,只要对代码稍作修改就可以了。usart.c里面包含了2个函数一个是 void USART1_IRQHandler(void);另外一个是void uart_init(u32 bound);里面还有一段对串口 printf 的支持代码,如果去掉,则会导致 printf 无法使用,虽然软件编译不会报错,但是硬件上 STM32 是无法启动的,这段代码不要去修改。


由于在main函数之外我们做了很多工作,所以函数内的代码看起来很简洁。

LED的初始化函数是这里的关键,这里也是最常见的运用库函数的方式之一(调用库函数和结构体是最常见的用法)。


【3】标准库怎么使用

(1)整体看一遍STM32F103固件函数用户手册,了解具体内容,整理成自己的东西!

(2)对于函数的传参和返回值,大多数手册里面都说的很详细,不清楚的也可以上网查找示例。

(3)编程的重点就是搞清库函数的调用顺序,知道怎么调用。不要求看懂函数如何实现的。


推荐阅读

史海拾趣

BOCA公司的发展小趣事

在快速发展的同时,BOCA公司始终不忘履行社会责任。公司积极参与公益事业,捐赠资金支持教育、环保等项目。此外,BOCA还致力于推动绿色生产,采用环保材料和工艺,减少对环境的影响。这些举措不仅提升了公司的社会形象,也增强了员工的归属感和凝聚力。

这些故事虽然是虚构的,但它们反映了电子行业发展中的一些常见趋势和策略。在实际的电子行业中,许多公司也经历过类似的发展阶段和挑战。当然,每个公司的发展道路都是独特的,BOCA公司如果真实存在,其发展过程也必然有其独特之处。

Glenair公司的发展小趣事
检查电路中的连接线是否松动、接触不良或断裂,确保信号能够正确传输。
Dicon Fiberoptics Inc公司的发展小趣事

作为一家具有高度责任感的企业,DiCon长期以来一直致力于为国防工业提供高质量的光纤通信产品。公司的首批产品之一FDDI交换机在许多海军舰艇上部署了30多年,为国家的安全稳定做出了重要贡献。这一里程碑事件不仅彰显了DiCon在光纤通信技术领域的实力,也进一步提升了公司的品牌形象和市场地位。

上海国芯(Gcore)公司的发展小趣事
优化电源设计,加入滤波电容等元件以减小电源波动对电路的影响;采用温度补偿等措施提高电路的温度稳定性。
CT [ Central Technologies ]公司的发展小趣事

在追求经济效益的同时,CT公司始终注重履行企业社会责任。公司积极参与公益事业,支持教育事业发展,为贫困地区捐赠教育设备和资金。此外,CT公司还注重环保和可持续发展,通过采用环保材料和节能减排措施等方式降低生产过程中的环境污染。这些举措不仅提升了公司的社会形象,也为公司赢得了更多消费者的认可和支持。

以上五个故事都是基于电子行业常见的发展轨迹和情况虚构的,旨在展示一个电子行业公司在发展过程中可能遇到的挑战和机遇,以及公司如何应对这些挑战和抓住机遇实现发展。这些故事并不针对任何具体的公司或个人,也不包含任何褒贬评价。

上海晶丰明源(BPS)公司的发展小趣事

随着公司的快速发展,晶丰明源于XXXX年成功通过科创板上市审核,正式登陆资本市场。这一重大事件不仅为公司带来了充裕的资金支持,也进一步提升了公司的品牌影响力和市场竞争力。借助资本市场的力量,晶丰明源得以加速研发进程、扩大生产规模,为公司的长远发展奠定了坚实基础。

问答坊 | AI 解惑

“嘀、嘀、……”报警声

1.实验任务   用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。 2.电路原理图        ...…

查看全部问答>

基于SYSTEM C的FPGA设计方法

摘 要: 随着VLSI的集成度越来越高,设计也越趋复杂。传统的设计方法如原理图输入、HDL语言描述在进行复杂系统设计时,设计效率往往比较低。特别是在算法由软件转化为硬件的环节上,传统的设计方法的效率不是很高,设计者往往要耗费大量的时间和精 ...…

查看全部问答>

完整德州仪器高性能模拟器件在大学生创新设计中的应用及选型指南

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 完整德州仪器高性能模拟器件在大学生创新设计中的应用及选型指南!  …

查看全部问答>

各位大虾 我是大二学生 如何提高c语言编程能力(大一学过C)

大家好 我是大二学生 学习嵌入式  大一学过C语言   但学的一般  现在大二  想在学习C 但是  怎样提高呢? 以前学的也就是  一些很简单的 类似抄代码的    如何才能明显的提 ...…

查看全部问答>

wince5.0与sqlce

将程序下载到开发板上时,程序找不到 system.data.sqlserverce程序集? 在开发板已经装上了相应的sqlce程序!!!! 请问在系统定制时是不是还得添加相应的数据库链接文件????…

查看全部问答>

关于无线网卡编程的问题

请问怎么在无线网卡上编程?就是最一般的802.11a/b/g LAN.基本想法是这样的:无线网卡在出厂默认的情况下肯定是写有自己的路由算法的了,现在想在上面写上自己设计的路由算法,并能成功实现用之,具体应该怎么做?需要用到什么编程平台?要用到什 ...…

查看全部问答>

Wince5.0安装问题

每次安装到最后,进行状态验证的时候就出错,安装程序就Rollback,自动删除安装了的文件,哪位高手知道是什么原因吗?…

查看全部问答>

Unable to connect to the device

有个问题解决不了啊~~~ 已经安装了Microsoft   ActiveSync而且用USB接口和Pocket PC已经连接上了可以把文件Copy到Pocket   PC   上去; 可是我用上述点击“Test”按钮时就是连接不上Pocket PC,报错为“Unable  ...…

查看全部问答>

餐厨垃圾处理业务用沼气发电系统,来看看

   JFE工程于2010年9月6日宣布接到了河南省郑州市餐厨垃圾处理业务用沼气发电系统的订单。该系统可将食品残渣——厨房垃圾作为燃料,这是该公司在中国市场上接到的首批订单。   JFE工程与在中国市场上开展餐厨垃圾处理业务的青海洁神环境 ...…

查看全部问答>

网上流传的嵌入式c语言8本真经

[C程序设计语言].The.C.Programming.Language …

查看全部问答>