C语言运行时有条件的,比如没有栈,C语言时运行不了的,所以单片机一开始跑的不是C语言代码,而是汇编,献给C语言建立好运行的环境,比如栈 堆的分配。这也是为什么启动文件是汇编文件,也就是s文件
而且每个STM32工程都必须有的,每个工程最开始执行的都是启动文件,一段汇编,因为一开始是执行不了C代码的。
野火的书也有介绍
我觉得把这种东西弄懂弄透彻可能比你单纯做个STM32项目更有意义。这样学STM32让我感觉更深入一个层面,变得更为专业。真正去把一个东西啃透。这才是一个业内人士玩STM32的表现。确实是要回归底层,把这些啃透。你会组装个无人机,这是低水平的技术,你会写STM32启动文件,这才叫技术人士业内人士,专业选手。你之前大学虽然做过那么多东西但是STM32只是个业余水平。而你总是玩那些东西玩得不宜乐趣,没有真正深入去啃,就像手写VIO。那些你弄得很轻松也很有成就感因为那些很简单,没有技术含量,真正有技术的难得需要你慢慢去啃的,去深入理解掌握的,会心态爆炸的。就像去研究FreeRTOS的源码,这才是业内人士该干的事情。业内人士应该谈论这个才是。
正点原子讲的STM32的启动文件
我感觉这个启动文件有点像bootloader,当然我知道这不是STM32的bootloader,但是启动文件实现的功能和这里所说的Bootloader很相似啊,比如为操作系统的运行搭建好环境,启动文件不也是为C语言的运行搭建好环境么,这里bootloader是板子上电运行的第一个程序,启动文件不也是的么。我后面再详细总结下STM32里面的启动文件和STM32的Bootloader的区别。
http://www.makeru.com.cn/video/197.html
关键字:stm32 启动文件 SystemInit函数
引用地址:
STM32的启动文件
推荐阅读最新更新时间:2024-11-07 14:28
气体传感器模块原理图和PCB设计分析
根据一个项目的需求,有台机器要用到气体传感器进行气体检测,需要设计一款气体传感器模块。 这个模块要实现以下这些功能: 1, 可以同时安装6种不同气体的传感器,也就是可以同时检测6种不同的气体。 2, 要有RS485接口,让气体传感器模块能和其它设备通过RS485连接,完成数据通信。 3, 供电电源是24V。 经过评估和查找资料,很快就确定了设计方案。原理图设计分析和PCB设计效果如下: 一,主控电路的设计。 这里选用STM32F101,主要考虑到这是工业级别的东西,所以尽量用性能比较强,质量过硬的芯片。同时也考虑到软件工程师熟悉的是STM32,不用重新熟悉芯片,软件开发起来简单,周期短。 二,电源电路的设计。 电路的供电是
[单片机]
STM32启动模式的选择
简介:本文介绍了STM32的3种启动模式的工作以及模式的选择。 STM32三种启动模式中存储器的存储介质 STM32三种启动模式对应的存储介质均是芯片内置的,它们是: 1)用户闪存 = 芯片内置的Flash。 2)SRAM = 芯片内置的RAM区,就是内存啦。 3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。 在每个STM32的芯片上都有两个管脚BOOT0和BOOT1,这两个管脚在芯片复位时的电平状态决定了芯片复位后从哪个区域开始执行程序,见下表: BOOT1=x
[单片机]
SD卡及STM32的SDIO接口相关原理
SD卡 SD卡(Secure Digital Memory Card)即:安全数码卡,它是在MMC的基础上发展而来,是一种基于半导体快闪记忆器的新一代记忆设备,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。 SD卡按容量分类,可以分为3类:SD卡、SDHC卡、SDXC卡 容量 命名 简称 0~2G Standard Capacity SD Memory Card SDSC或SD 2G~32
[单片机]
stm32的体系架构
一.首先说说STM32F10x芯片由丝印所体现出的共同点和区别。 先简单说说命名规则: 101基本型,102USB基本型,103增强型,105或107互联型。 T:36脚,C:48脚,R:64脚,V:100脚,Z:144脚。 C:256K SRAM, D:384K SRAM, E:512K SRAM。 我们正对芯片的丝印,会看到芯片左下角会有一个小圆点(正方向),有的在右上角会有一个稍大点的圆圈标记,靠近左下角小圆点的管脚号为1,然后以逆时针方向,ZET6最后一个管脚号为144,VET6最后一个管脚号为100,即是Z的管脚多于V的,说以说Z的功能也要多于V的;接下来说说丝印上的ARM和ST,crotex-Mx内核是由ARM公司(就
[单片机]
采用STM32 单片机的太阳能LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户
[电源管理]
KEIL 配置STM32 SRAM启动,调试
听说STM32的FLASH只能擦写10000次,一个开发板就算1天擦写10次 10000/10/365=2.73972602739726,那岂不是一个开发板用两年之后芯片就废了,好方啊,有没有(其实如果你能做到10000次擦写,估计这个开发板你已经玩透了,把芯片刷过flash寿命,菜鸟也变成老鸟了)。如果你实在担心擦写10000次,那就可以试试在RAM中调试代码。 一、STM32的自举配置: 主flash:即从内部flash启动,keil下载程序默认就是下载到这里的,10000次擦写指的也是这里,发布版本的程序也是这种启动模式 SRAM:即从RAM中启动程序,调试的时候可以从RAM中启动 系统存储器:一般用于ISP(in sy
[单片机]
STM32 | 一种简单、实用的测量程序运行时间的方法
前言 平时我们可能很少去关注程序运行的时间,但是在一些情况下可能需要对程序进行一个整体的复盘、优化。 那么,程序运行的时间就是一个可以考虑的方面,可以测一下某些代码块、函数、算法的运行时间,然后整体考虑看看有没有必要进行优化。 之前在某工控类项目中,我就有接到一个任务去测试程序中关键代码的执行时间,并输出报告。当时是使用一个GPIO+示波器进行测试的,也可以使用逻辑分析仪来测。 当时测量的方法很简单: 在要测试的代码块/函数之前设置该GPIO的电平为高电平,在要测试的代码块/函数之后设置该GPIO为低电平,使用示波器测高电平的时间,就知道了这一代码块/函数的运行时间。 下面就通过实例来介绍一下这种简单而有效的方法。
[单片机]
STM32学习笔记之 DS18B20 SEARCH ROM
使用说明,根据MCU不同 用户只需修改4函数 //单总线复位函数 int OWReset(); 单线总线的复位函数,注意这个要做相应修改,如果期间存在要返回1,期间不存在返回0, 直接从总线上读取的是期间存在返回0,不存在返回1 //向总线发送一个字节 void OWWriteByte(unsigned char dat); //向总线发送一位 void OWWriteBit(unsigned char bit_value); //读取总线一位 unsigned char OWReadBit(); 使用时用 int OWFirst();发现第一个单线器件 如果期间存在返回1,并且把ID存在 unsigned char
[单片机]