历史上的今天
返回首页

历史上的今天

今天是:2025年08月05日(星期二)

正在发生

2019年08月05日 | 基于STM32从零写操作系统系列---使用官方固件库

2019-08-05 来源:eefocus

目的内容

使用官方固件库的好处就是方便,看着说明文档就可以使用。但是,从编译后的.bin文件大小看,一样的点亮LED灯,使用固件库产生的.bin文件大小差不多有6K,而上一章的串口+LED程序编译后的.bin文件就只有2K多。对于stm32F103zet6而言,flash大小512K,如果想要在这么点空间装个”有点意思”的操作系统,就需要尽量减少.bin文件的大小了。在实现的功能相同的情况下,用最少的指令数量显然更合理。在使用固件库时,编译的一些文件中,有部分函数功能是没有用到的,但他们也被链接到.bin文件中了。所以最终生成的.bin文件就比较大了。


还有一个问题就是,固件库用起来方便,但是想要完全掌握你的程序的来龙去脉,你还要必须认真去看固件库的源代码,花时间去了解固件库的结构和一些使用规范。所以,在以后的编写操作系统的过程中,固件库只是作为我的参考,而不会完全使用固件库。这样就可以以固件库为范例,去学习别人的一些编程思路,学习别人的一些良好的编程规范,学习C语言的一些高级用法。


分析

1.先来看看本次实验的项目文件结构

2.创建如上的目录结构后,就是从“STM32最新固件库v3.5”复制相关的头文件和.c文件。boot.s是自己编写汇编启动代码,test_led.c是自己编写的测试代码,其他的.h和.c文件都是复制固件库的。boot.s文件和上一章中的boot.s文件一样。


3.编写test_led.c

4.Makefile有所变动,主要是修改后子目录的Makefile更具有通用性,添加了如下一条代码。


这条代码用于查找当前目录下的.s和.c文件,然后文件名不变加上扩展名.o。


小结

这次使用固件库,只是为了了解一下固件库是如何实现的。为以后继续编写自己的操作系统添加一个源代码参考。


由于码云的限制,代码分享在百度网盘,链接如下,文件名:chapter8.zip

STM32最新固件库v3.5也可以在下面的网盘下载:

链接:https://pan.baidu.com/s/1DlzYMo8oZsnF9ammJuuZoQ 

提取码:dc5h 

推荐阅读

史海拾趣

Concurrent Logic公司的发展小趣事

在取得初步成功后,Concurrent Logic开始扩展其产品线。他们不仅开发了多款针对不同应用场景的并行处理芯片,还进军了与并行计算紧密相关的其他硬件领域,如高性能的服务器和存储设备。这些新产品的研发和上市,进一步增强了公司在市场上的竞争力。

Anders DX公司的发展小趣事

随着技术的不断进步,Concurrent Logic成功开发出了一款具有革命性的并行计算芯片。这款芯片在市场上引起了巨大的反响,因其出色的并行处理能力和高效的逻辑运算,很快得到了众多电子设备和数据中心的青睐。这一技术的突破不仅为公司带来了可观的收入,更让Concurrent Logic在电子行业中崭露头角。

台湾诚阳(BC)公司的发展小趣事

台湾诚阳(BC)公司始终坚守品质至上的原则。从原材料的采购到生产过程的每一个环节,公司都严格把控,确保产品的品质达到最高标准。同时,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和服务。这种对品质的执着追求,使得台湾诚阳在客户中赢得了良好的口碑,品牌影响力逐渐扩大。

ddm hopt + schuler GmbH & Co KG公司的发展小趣事

随着全球对环境保护意识的增强,ddm hopt + schuler公司开始关注绿色制造和可持续发展。公司投入大量资源进行绿色生产技术的研发,成功开发出一系列节能、环保的电子生产设备。这些设备在保障生产效率和产品质量的同时,显著降低了能源消耗和废弃物排放。这一举措不仅提升了公司的品牌形象,也赢得了客户和市场的广泛赞誉。

ERP Power公司的发展小趣事

在这个故事中,我们将探讨ERP Power如何在云计算技术的推动下实现创新发展。通过引入云计算技术,ERP Power系统为企业提供了更加灵活、可扩展的信息化解决方案,帮助企业降低了IT成本并提高了系统安全性。

Fischer Elektronik公司的发展小趣事

在追求业务增长的同时,Fischer Elektronik也始终关注可持续发展和环保问题。公司积极采用环保材料和生产工艺,努力减少对环境的影响。此外,Fischer Elektronik还致力于推动绿色能源的应用,通过研发高效节能的产品,帮助客户降低能耗和减少碳排放。这种负责任的企业形象,不仅提升了公司的社会声誉,也为其在未来的发展中赢得了更多的支持和机遇。

问答坊 | AI 解惑

[原创]EDA 资料分享

defun( gfe_HelloWorld ()prog( ()    mark = axlDBTransactionStart()    axlControlRaise(\'options)    HelloWorld_form_file = \"./HelloWorld.form\"    _c ...…

查看全部问答>

有关无线技术的一些标准(二)

新兴的无线技术标准 随着人们对无线技术在过程工业中的应用兴趣持续增长,各种可用技术的数量也随之增加――要求为这些应用中的现场网络提供特定标准的愿望也增加了。 为过程工业而开发的无线标准目前有三个,分别是:WirelessHART(无线HART)、 ...…

查看全部问答>

自主式寻迹机器人小车的设计

自主式寻迹机器人小车的设计…

查看全部问答>

“敖飞电子”AVR16开发板芯片手册合集

在论坛芯币兑换的敖飞电子的朋友们不用到处找芯片手册了,我已经为大家准备好了。 …

查看全部问答>

请问DC综合的乘法器是什么类型的?有必要再用verilog专门写一个乘法器吗?

大家好:                 请问DC对于“*”综合出来的乘法器是什么类型的?有必要再用verilog专门写一个乘法器吗?现在我的工作时钟为20m左右,数据位数为32位的,需要乘法器在一个时 ...…

查看全部问答>

基于 LM3S的图形驱动库开发之底层驱动函数的编写

在上一个文档中我给大家介绍了TI图形驱动库的结构,分为三层:显示驱动层,图形基元层,小工具层。其中显示驱动层是需要我们程序员自己补充的。现在我们来具体谈谈如果来补充和书写底层驱动函数。从ti的文档中我们可以看出,我们需要补充的就是tDis ...…

查看全部问答>

【新人求助】关于PIC编程语言的问题

各位兄弟大家好!   本人是学习单片机的新人,不仅是PIC,51单片机以前也没有接触过。   由于工作需要,从现在起需要学习PIC单片机,想听取各位兄弟的意见。   我的问题是汇编语言和C语言各自有什么特点,对于我这样的新手来 ...…

查看全部问答>

STM32F103的USART1接收数据不一致,请香版主和各位兄弟帮忙

我使用英倍特的MCBSTM32开发板,用其USART1进行收发一串数据。 我现在的问题: 串口配置:波特率1200,1个起始位,8位数字,1个EVEN校验,一个停止位 STM32配置:波特率1200,1个起始位,9位数字,1个EVEN校验,一个停止位 串口发送数据: ...…

查看全部问答>

请教430动态分配空间的问题

#include <stdio.h> main() { int *Memory; Memory=(int *)malloc(100*sizeof(int)); .......... } 在编译是通过的。但连接是出现以下问题 Error[e16]: Segment DATA16_Z (size: 0x7d0 align: 0x1) is too long for segment definition ...…

查看全部问答>