历史上的今天
今天是: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)编程的重点就是搞清库函数的调用顺序,知道怎么调用。不要求看懂函数如何实现的。
史海拾趣
|
1.实验任务 用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。 2.电路原理图 ...… 查看全部问答> |
|
摘 要: 随着VLSI的集成度越来越高,设计也越趋复杂。传统的设计方法如原理图输入、HDL语言描述在进行复杂系统设计时,设计效率往往比较低。特别是在算法由软件转化为硬件的环节上,传统的设计方法的效率不是很高,设计者往往要耗费大量的时间和精 ...… 查看全部问答> |
|
完整德州仪器高性能模拟器件在大学生创新设计中的应用及选型指南 本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 完整德州仪器高性能模拟器件在大学生创新设计中的应用及选型指南! … 查看全部问答> |
|
各位大虾 我是大二学生 如何提高c语言编程能力(大一学过C) 大家好 我是大二学生 学习嵌入式 大一学过C语言 但学的一般 现在大二 想在学习C 但是 怎样提高呢? 以前学的也就是 一些很简单的 类似抄代码的 如何才能明显的提 ...… 查看全部问答> |
|
将程序下载到开发板上时,程序找不到 system.data.sqlserverce程序集? 在开发板已经装上了相应的sqlce程序!!!! 请问在系统定制时是不是还得添加相应的数据库链接文件????… 查看全部问答> |
|
请问怎么在无线网卡上编程?就是最一般的802.11a/b/g LAN.基本想法是这样的:无线网卡在出厂默认的情况下肯定是写有自己的路由算法的了,现在想在上面写上自己设计的路由算法,并能成功实现用之,具体应该怎么做?需要用到什么编程平台?要用到什 ...… 查看全部问答> |
|
Unable to connect to the device 有个问题解决不了啊~~~ 已经安装了Microsoft ActiveSync而且用USB接口和Pocket PC已经连接上了可以把文件Copy到Pocket PC 上去; 可是我用上述点击“Test”按钮时就是连接不上Pocket PC,报错为“Unable  ...… 查看全部问答> |
|
JFE工程于2010年9月6日宣布接到了河南省郑州市餐厨垃圾处理业务用沼气发电系统的订单。该系统可将食品残渣——厨房垃圾作为燃料,这是该公司在中国市场上接到的首批订单。 JFE工程与在中国市场上开展餐厨垃圾处理业务的青海洁神环境 ...… 查看全部问答> |




