stm32 启动文件的选择

发布者:温暖拥抱最新更新时间:2016-08-25 来源: eefocus关键字:STM32  启动文件 手机看文章 扫描二维码
随时随地手机看文章
最近在网上看到一些关于STM32启动文件的问题帖,都是类似这样的问题:
随便选两个
“startup_stm32f10x_ld、hd、md这3个启动文件有什么不同???”
“官网固件库中的启动文件有啥区别,怎么选择?”
搜索了论坛,也看了一下,有一些回答,但是都不太全或者不甚明了。其实我以前也不清楚,当然我是新手,只不过是个爱折腾的新手,因为我觉得,这个有必要弄清楚。一是启动文件在一个工程中有着不可取代的作用,二是对于STM32这个让人蛋疼而又强大的东东,经常是新手乱添加启动文件或者去找一下工程例子“依葫芦画瓢”的添加,试问你的MCU和人家工程例子的就是一样,换一款型号,要命[夸张的修辞手法,呵呵]?所有说,基于这些,我就说一说我的认识:
    注意此处只针对MDK-ARM的IDE,其他的一样,只不过想说明的是对不同的IDE,同一芯片型号的启动文件的“内容”是不一样的,这是因为编译器造成的,意思就是说,启动文件的功能一样,但是指令有所区别。这个每个启动文件也注释了,如:

(原文件名:.s for MDK IAR.JPG) 
啰嗦了……
    启动文件的作用:
    无论性能高下,结构简繁,价格贵贱,每一种微控制器(处理器)都必须有启动文件,启动文件的作用便是负责执行微控制器从“复位”到“开始执行main函数”中间这段时间(称为启动过程)所必须进行的工作。最为常见的51,AVR或MSP430等微控制器当然也有对应启动文件,但开发环境往往自动完整地提供了这个启动文件,不需要开发人员再行干预启动过程,只需要从main函数开始进行应用程序的设计即可。[来自网上]
    我的理解,说白了,大家常说,程序执行都从main函数开始,是的,没错,但是在这之前是谁来完成了这一个繁琐而又复杂的启动过程呢?就是它。(看来.s尽干脏活苦活,就像“活雷锋一样,做了好事有不留名”)
    具体的启动过程论坛里有,想了解的可以去细看。
    好了,上图:
    
(原文件名:MDK-s.JPG) 
   看到是不好多,都晕了,慢慢来看:
   重要的来看这些缩写:
   这几个是代表Flash容量的
   ld   Low-density         小容量   16-32K          
   md   Medium-density      中容量   64-128K          
   hd   High-density        大容量   256-512K
   xl                       超大容量 512-1024K
   这些都是基本型的,包括STM32F101xx, STM32F102xx 和 STM32F103xx
   然后
   vl  value line devices   超值型系列 大家记住:这个只有STM32F100xx,也就是说只要是vl那一定是STM32F100的启动文件,其他的不予考虑
   下面还有个特殊的:
   cl  Connectivity line devices 互联型 有STM32F105xx和STM32F107xx
   区别完了,我想你大概也知道什么样的片子对应什么启动文件了吧,如果还有点迷糊,不要紧,下面来举个例子:
   如:STM32F103VC
   首先你要知道它的容量,这儿IDE下面器件选型
   
(原文件名:MDK opt.JPG) 
还有这儿,数据手册

(原文件名:database 103vc.JPG) 
都可以知道它的容量,看你习惯,我人懒,经常用第一种方式
    知道容量了之后,因为它不属于超值型STM32F100xx系列,也不属于互联型的STM32F105xx和STM32F107xx,所有我想你知道该怎么办了吧:
    
(原文件名:s.JPG) 
                                                                                          工程下面如是添加
最后你可以打开这个.s看一下,这儿注释得也很明确
关键字:STM32  启动文件 引用地址:stm32 启动文件的选择

上一篇:STM32 复用 与 重映射(USART Remap)
下一篇:stm32 IAP 实现

推荐阅读最新更新时间:2024-03-16 15:06

关于STM32串口的理解
总的来说,STM32单片机的串口还是很好理解的,编程也不算复杂。当然我更愿意希望其中断系统和51单片机一样的简单。 对于接收终端,就是RXNE了,这只在接收完成后才产生,在执行USART_ITConfig(USART1, USART_IT_RXNE, ENABLE)代码时不会进入ISR。但麻烦的就是发送有关的中断了:TXE或者TC,根据资料和测试的结果,TXE在复位后就是置1的,即在执行USART_ITConfig(USART1, USART_IT_TXE, ENABLE)后会立即产生中断请求。因此这造成一个麻烦的问题:如果没有真正的发送数据,TXE中断都会发生,而且没有休止,这将占用很大部分的C
[单片机]
STM32 中断学习Interrupt/Evens
1、NVIC的优先级概念 占先式优先级 (pre-emption priority): 高占先式优先级的中断事件会打断当前的主程序/中断程序运行— —抢断式优先响应,俗称中断嵌套。 副优先级(subpriority): 在占先式优先级相同的情况下,高副优先级的中断优先被响应; 在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才 能得到响应——非抢断式响应(不能嵌套)。 2、判断中断是否会被响应的依据 首先是占先式优先级,其次是副优先级; 占先式优先级决定是否会有中断嵌套; Reset、NMI、Hard Fault 优先级为负(高于普
[单片机]
STM32 IAP 设计实例 (二)
上一篇介绍了IAP的实现。这里开始介绍主机的一个设计实例。 目标功能:STM32做主机,硬件接口主要包括SD card, USB,CAN, LCD,按键。 主要功能: 1,通过USB链接到PC,将用于更新的APP程序的BIN文件,放入SD中。 2,STM32通过FATFS读写SD卡中的文件。 3,通过CAN接口发送数据给从机。 4,LCD和按键用于人机交互。 PC通过STM32 USB读取SD卡的部分功能直接使用使用了神州三号开发板中的例程。移植FATFS参考了网上的一些例子,比较乱。 view plain copy int main(void) { uint16_t Status
[单片机]
<font color='red'>STM32</font> IAP 设计实例 (二)
快速入门STM32的学习经验总结
一、前言 假如你会使用8051,会写C语言,那么STM32本身并不需要刻意地学习。 我们要考虑的是, 我可以快速用STM32实现什么?为什么使用STM32而不是8051? 是因为51的频率太低,无法满足计算需求? 是51的管脚太少,无法满足众多外设的IO? 是51的功耗太大,电池挺不住? 是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的内存太小而你要存储的东西太多? 当你需要使用STM32某些功能,而51实现不了的时候, 那STM32自然不需要学习,你会直接去寻找STM32某方面的使用方法。 比如要用spi协议的网卡、要使用串口通信、要使用rtos等等... 快速上手的学习步骤 我们假定大家已经对STM32的
[单片机]
STM32 SPI笔记(基于寄存器)
1.说在前面:最近尝试操作VS1053音频模块 使用的数据传输方法使用SPI协议,打算学一下SPI的配置方式 2.SPI 2-1:SPI(Secial Periperal interface),作为四线的通信接口,有着MISO MOSI SCLK和CS MISO:主进从出 MOSI:主出从进 SCLK: 时间信号 CS:片选信号 2-2:CPHA和CPOL CPHA为时钟相位,可以配置为1/0,控制数据的采样方式,设置为0的时候,控制在时钟周期的第一个跳变沿进行数据采集,设置为1的时候在第二个跳变沿进行采集 CPOL为时钟极性,可以配置为1/0,控制空闲状态的时钟极性,设置为0的时候空闲状态为低
[单片机]
<font color='red'>STM32</font> SPI笔记(基于寄存器)
STM32的GPIO口能够承受多大电压? 哪些IO口能容忍5V?
STM32的部分IO口可以容忍5V,部分IO口只能是3.3V容忍。 到底哪些能够容忍,查看数据手册,引脚标注”FT 的是可以容忍5V的。 比如:STM32F103xCDE_DS_CH_V5.pdf 在我们光盘“8,STM32参考资料STM32中文数据手册 下面 STM32F4的IO电平兼容性问题,STM32F4的绝大部分IO口,都兼容5V, 至于到底哪些是兼容5V的,请看STM32F40x的数据手册(注意是数据手册,不是中文参考手册!!), 见 表:Table 6 STM32F40x pin and ball definitions,凡是有FT/FTf标志的,都是兼容5V电平 的IO口,可以直接接5V的外设 (注意
[单片机]
STM32的通用定时器的知识及其配置
通用定时器大致有3个需要配置 1.时基配置 TIM_TimeBaseStructInit 2.外设输出PWM配置 TIM_OCStructInit 一般用来输出PWM的 3.外设输入捕捉配置 TIM_ICStructInit 对于来自与外面的信号进行输入捕捉,可以捕捉电平变化。 内容较多,本文不在叙述
[单片机]
基于STM32中串口通信的实例分析
串口是串行接口(serial port)的简称,也称为串行通信接口或COM接口。串口通信是指采用串行通信协议(serial communication)在一条信号线上将数据一个比特一个比特地逐位进行传输的通信模式。串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。 在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。 常用的两种基本串行通信方式包括同步通信和异步通信
[单片机]
基于<font color='red'>STM32</font>中串口通信的实例分析
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved