墨镜镜片什么材质好| 白蛋白下降是什么原因| 99年发生了什么事情| 省政府秘书长什么级别| 南方有什么生肖| 敌敌畏中毒用什么洗胃| 肝内脂肪浸润是什么意思| 什么植物好养又适合放在室内| 核医学科是检查什么的| 高血压是什么原因造成的| 业障什么意思| 中国信什么教| 端粒是什么| hcg高代表什么| 在什么什么后面| 什么时候同房容易怀孕| 月经来了一点就没了是什么原因| 好逸恶劳什么意思| 一直吐是什么原因| 岂是什么意思| 榴莲什么季节吃最好| 万能输血者是什么血型| 放生乌龟有什么寓意| 什么叫留守儿童| 紫外线过敏什么症状| 豆浆机什么牌子好| 才华横溢是什么生肖| 女人梦见龙是什么征兆| 男怕初一女怕十五是什么意思| 定增是什么意思| 汗颜什么意思| 运是什么意思| 硬盘是什么| 6月26日是什么日子| 做梦梦到鸡是什么意思| 息肉是什么东西| 黄宗洛黄海波什么关系| 失眠什么意思| 清道夫吃什么| 作践自己是什么意思| 什么的猴子| 磁共振是查什么的| 13点是什么时辰| 白细胞正常c反应蛋白高说明什么| 医学上cr是什么意思| 左下腹疼是什么原因| 指甲紫色是什么原因| 肾看什么科| 白月光什么意思| 政客是什么意思| 莫字五行属什么| 九月十五日是什么星座| 乳腺挂什么科| 传教士是什么姿势| 三七粉有什么作用| 吸尘器什么牌子好| 什么病不能喝酒| 武汉有什么玩的| 腰肌劳损是什么意思| 1963年属兔的是什么命| 外贸原单是什么意思| 胆结石能吃什么水果| k金是什么意思| 人缺钾有什么症状| 一个木一个西读什么| 肚子疼喝什么药| 前列腺增生吃什么药最好| 乙酉日五行属什么| 聊天什么程度算暧昧| 一个月一个亏念什么| 专科什么专业就业前景好| 脚踩棉花感见于什么病| 马克华菲是什么档次| 骨客念什么| 甲钴胺是什么药| 64年的龙是什么命| 吃核桃有什么好处和坏处| 种什么药材最快又值钱| 监护是什么意思| 面粉是什么做的| 原发性高血压什么意思| 客厅挂画有什么讲究| 煲蛇汤放什么材料好| 幽门螺旋杆菌阳性什么症状| 梦见黑棺材是什么征兆| 牛肉不能和什么水果一起吃| 86年属什么的| 扁平疣用什么药膏除根| 小虾米吃什么| 中国第一大姓是什么| 汐字五行属什么| 抚今追昔的意思是什么| 催丹香是什么意思| 肺虚吃什么药| 勾践姓什么| 荨麻疹能吃什么水果| 双手麻木是什么原因| 口嗨是什么意思| 富贵病是什么病| 肺部结节是什么意思啊| 肝血亏虚吃什么中成药调理| 战国时期是什么时候| 早上六点半是什么时辰| 奶茶有什么危害| 胎动频繁到什么程度说明缺氧| 操是什么意思| moncler是什么品牌| 正值当年什么意思| 五七是什么意思有什么讲究| 学英语先从什么学起| 颉在姓氏里念什么| 咏柳的咏是什么意思| 鲩鱼是什么鱼| 宫外孕破裂有什么症状| 赵构为什么杀岳飞| 美瞳是什么| 甲抗是什么原因引起的| 肺炎为什么要7到10天才能好| 晚上睡觉脚抽搐是什么原因| 纸鸢是什么意思| 茶白色是什么颜色| 为什么吃甲鱼不吃乌龟| fat是什么意思| 木瓜不能和什么一起吃| 张五行属什么| 隔天是什么意思| 白血球低是什么原因| 2000年什么年| 焦虑症是什么原因引起的| 是非是什么意思| 怀孕有什么征兆| 南辕北辙告诉我们什么道理| 制动什么意思| 晚上尿多什么原因| 柿子不能跟什么一起吃| 左耳朵嗡嗡响是什么原因引起的| 什么人不能吃桃子| 炒面用什么面条最好| 益母草煮鸡蛋有什么功效| amber是什么意思| 舌系带挂什么科| 脾胃虚寒有什么症状| 尿道口痛什么原因| 女人下面有异味是什么原因| 高血压适合做什么运动| 桃子不能和什么食物一起吃| 月经量少是什么原因| 什么是kpi| 总爱睡觉是什么原因| 什么罩杯最大| 什么东西最好卖| 女生是t是什么意思| 射手什么象星座| 灰白组织是什么意思| 什么奶粉好| 清热去湿热颗粒有什么功效| 1月18是什么星座| 副高相当于什么级别| 一等功有什么待遇| 做宫腔镜检查需要提前做什么准备| 宫腔内囊性回声是什么意思| bhp是什么单位| 浮躁的意思是什么| 梅菜是什么菜做的| 突然眼睛充血是什么原因引起的| 李晨的爷爷叫什么| 表里不一是什么意思| 怀孕前三个月为什么不能告诉别人| 糙皮病是什么病| 蛇头疮用什么治疗最快| 唐僧的袈裟叫什么| 煮海带放什么容易烂| 紫藤花什么时候开花| 小鸟来家里有什么预兆| 三维和四维有什么区别| 胆汁酸高是什么意思| 晚上20点是什么时辰| 头皮上长疣是什么原因造成的| 提前来大姨妈是什么原因| 什么是碳水化合物食物| 骨结核吃什么药效果好| 反复发烧吃什么药| as什么意思| 舌头白吃什么药| 儿童喉咙痒咳嗽吃什么药| 草字头加个弓念什么| 水解奶粉是什么意思| 什么叫末法时代| 糜烂型脚气用什么药| 血糖高对身体有什么危害| 吃什么补维生素D效果最好| 一什么故事| 司南是什么| 常喝苦荞茶有什么好处| 自给自足是什么意思| 12月出生的是什么星座| 一切有为法是什么意思| 叶酸片是治什么的| 迪奥是什么| bata鞋属于什么档次| 丿是什么字| 什么草药可以止痒| 孕妇过敏性鼻炎可以用什么药| 黄瓜籽粉有什么作用| 捋一捋是什么意思| 咖色配什么颜色好看| 氤氲是什么意思| 怀孕什么不能吃| 翡翠属于什么五行| 肤色不均匀是什么原因| 测子女缘什么时候到来| 发烧挂什么科| 吃什么避孕药可以推迟月经| 检查肛门挂什么科| 女人左眼角有痣代表什么| 雷人是什么意思| 情绪上来像发疯一般是什么病| 手背发黄是什么原因| 睡觉尿多是什么原因| rock什么意思| 什么心什么气| 10月1是什么星座| 什么情况下月经推迟| 为什么嘴里发苦| 优甲乐是治什么病的| 玉米属于什么类食物| 剖腹产后可以吃什么| 开什么节什么的成语| 什么时候开始胎教| 生殖感染用什么消炎药效果好| 咽炎吃什么药最有效| 贵人相助是什么意思| 明年属什么生肖| 凤凰男什么意思| 红细胞是什么意思| 海洋中最多的生物是什么| 梦见别人家拆房子是什么预兆| 滑膜炎吃什么药| f00d中文是什么意思| 流星雨是什么意思| 甲基蓝治疗什么鱼病| 教师节什么时候| ella是什么意思| 全可以加什么偏旁| 什么枝条| 懒羊羊的什么| 整装待发是什么意思| 拉肚子吃什么药比较好| 正常的心电图是什么样的图形| 心脏下边是什么器官| 麻豆是什么| 倒卖是什么意思| 哈密瓜为什么会苦| 看肝挂什么科| 腿有淤青是什么原因| 嘴里发甜是什么原因| 时值是什么意思| 誉之曰的之是什么意思| 女人的逼什么样| 吃什么补脑| 股票放量是什么意思| 口渴是什么病的前兆| 什么叫职业年金| 白术适合什么地方种植| 百度

新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > STM32F10x在应用中编程的实现方法

十月十一是什么星座

作者: 时间:2025-08-04 来源:网络 收藏
百度 不读何、刘两家注,不知朱注错误处,亦将不知朱注之精善处。

  引 言

  Cortex-M3是首款基于ARMv7-M体系结构的32位标准处理器,RISC结构,包含高效灵活的Thumb-2指令集,拥有杰出的低功耗特性,为微控制器系统、汽车车身控制系统、工业控制系统和无线网络等嵌入式应用量身设计。ST公司推出基于Cortex-M3内核的STM32系列处理器,凭借其出众的性能、创新的外设、优越的功耗控制,得到众多工程师的青睐。

  针对嵌入式应用的特点,STM32处理器提供功能强大的硬件调试接口——JTAG接口和串行接口,极大方便了设计,缩短了产品的开发周期。不仅如此,STM32处理器内嵌的闪存存储器允许在电路编程(In-Circuit Pro-gramming,ICP)和(In-Application Program-ming,IAP)。利用,仅需通过一根串口线,就可以完成产品固件的更新。本文对STM32处理器的进行了详细的分析,结合硬件和驱动给出了IAP的具体实现方法,稍加修改,便可应用于STM32处理器的所有系列产品。

  1 处理器

  1.1 STM32处理器特点

  STM32全系列处理器具有脚对脚、外设及软件的高度兼容性。这给应用带来很好的灵活性,易于将应用升级到不同存储空间或不同封装的平台。STM32处理器的产品全系列兼容,使得项目之间的代码重用和移植很方便。

  1.2 STM32处理器

  Cortex-M3的存储系统采用统一编址的方式,程序存储器、数据存储器、寄存器被组织在4 GB的线性地址空间内,以小端格式(little-endian)存放。如图1所示。

内存映射

  在代码区,0x00000000地址为启动区。上电以后,CPU从这个地址开始执行代码0x08000000为用户Flash的起始地址,0x1FFFF000为系统存储器(system memory)的起始地址。对于STM32处理器,可以通过配置BOOT0和BOOT1两个引脚来选择不同的启动模式,如表1所列。CPU在时钟信号的第4个上升沿锁存BOOT引脚的值,根据两个引脚的值将对应的存储器物理地址映射到启动区。

启动模式

  系统存储器也称为“大信息块”,有2 KB的容量。所有上市的STM32处理器,在出厂前已经烧写进去自举模式下的启动程序(Bootloader),并且将之锁定防止用户擦写。通过配置BOOT0和BOOT1选择系统存储器启动,相应的启动程序在复位后得以执行,配合PC端的通信软件,通过1口允许用户将程序烧写到用户Flash区。之后,将BOOT0和B00T1重新配置为用户Flash存储器启动,进入正常的应用程序。

  上述的自举模式类似于ISP编程,相比其他烧写方式方便许多,但真正方便灵活的是在应用中编程(IAP),只需一根串口线就可以载入程序,复位后立即执行新的应用程序。

  2 IAP功能原理

  在应用中编程(IAP)使得用户可以在程序运行时重新对Flash进行编程。简单地说,IAP的编程工作是:下载编译好的二进制文件数据到RAM;将数据重新编程到特定的Flash区。这两个工作是由IAP驱动程序完成的。使用IAP功能后,系统的固件由2部分组成:第1部分是IAP驱动,不执行通常的功能,而是通过微控制器支持的任一种通信管道(如USB、、SPI等,本文使用)接收数据,并执行对第2部分代码的更新;第2部分是真正的应用程序代码,实现具体的功能。这两部分代码共同烧写在Flash中。要注意的是,这两部分代码不能重叠,否则无法实现IAP功能。

  系统上电以后,IAP驱动首先运行,它主要执行如下的操作:

  ①根据硬件信号或软件条件判断是否需要对第2部分代码进行更新;

  ②如果不需要更新,则跳转到④;

  ③执行更新操作;

  ④跳转到第2部分代码执行。

  STM3210x处理器IAP驱动的流程如图2所示。图中显示IAP主界面是利用超级终端实现的,传输协议用的是Ymodem协议。需要注意的是,由于IAP驱动占用了用户Flash区的一段起始空间,因此Flash的可编程最大空间要把这部分除去。

STM3210x处理器IAP驱动的流程

  3 IAP功能实现

  3.1 硬件电路

  采用型处理器作为核心。该处理器可全速工作在72 MHz,拥有3个USART接口,内嵌128 KB Flash和20 KB SRAM。Flash是以页的形式组织的,擦除1页的时间约为20~40 ms;在整个工作范围内其擦除次数可达10 000次,经10 000次擦除后,在+55℃的保存环境中数据保存期限仍可达20年。用户完全不必担心使用了IAP功能后对产品造成不良影响。

  IAP驱动使用USART1口作为通信管道,PB口的第9引脚作为IAP判断是否进入IAP功能的信号线。引出一个按键,作为IAP功能选择按键,只要在上电或复位时按住此键就会进入IAP功能主界面,否则直接执行正常应用程序。BOOT0和BOOT1是启动配置跳线。相应的硬件电路分别如图3、图4和图5所示。

IAP通信管道USART1

按键电路

启动配置电路

  3.2 IAP驱动

  IAP驱动主要包含如下源文件。

  main.c:完成Flash解锁、按键端口初始化、按键判断、USART1的初始化以及处理器的始终初始化,另外还初始化指针和跳转到应用程序处语句。然后从common.c执行主菜单。

  common.c:显示主菜单。主菜单上显示一系列操作,如加载二进制文件、执行应用程序以及禁止写保护(如果事先Flash被写保护)。

  download.c:等待用户选择传送文件操作,或者放弃操作以及一些提示信息,但真正实现传送的是ymodem.c源文件。

  ymodem.c:负责从超级终端接收数据(使用Ymodem协议),并将数据加载到内部RAM中。如果接收数据正常,则将数据编程到Flash中;如果发生错误,则提示出错。

  3.3 软件实现

  要实现IAP功能,还需做一些准备工作:

  ①要准备BIN类型的代码文件。开发环境使用的是Keil,默认情况下Keil生成HEX类型的编译文件。利用Keil自带的fromelf.exe工具,就可以生成二进制文件。

  ②对超级终端进行设置。IAP驱动中对USART1的设置为:波特率为115 200 kb/s,8位数据位,1位停止位,无校验位和硬件控制。超级终端也必须保持相同设置。

  IAP驱动和应用程序代码需要分配在Flash的合适位置。图6是2部分代码在Flash中的存储情况。由于IAP驱动代码占用8 KB的空间,故而将Flash最初的8 KB划出来,应用程序是从0x08020000地址处开始存放的。这是通过在common.h头文件中语句定义的:

  #define ApplicationAddress 0x08020000

  也可以定义在其他0x08020000地址后的任何位置,只要保证应用程序大小不超过所用处理器Flash的容量。在platform_config.h头文件中有定义Flash的语句:

  #define PAGE_SIZE(0x400) //Flash页大小为1 KB

  #define FLASH_SIZE(0x20000)//Flash容量为128 KB

  处理器有2种Flash页的大小:1 KB和2 KB。通过以上语句即可定义页大小。

  在platform_config.h头文件中还定义了进入IAP功能选择按键映射引脚:

程序

  IAP驱动在Keil中编译、链接后,利用ARM公司的RealView ULINK2仿真器将生成的HEX文件烧写到Flash中。此时Keil自带的Flash烧写工具要设置Flash的起始地址为0x08000000。在应用程序中,定义向量表的函数NVIC_SetVectorTabl(NVIC_VectTab_FLASH,0x2000)中的第2个参数,即Flash的偏移量一定要设置成0x2000或更大的数值。同时,Flash烧写工具也要做相对应的设置。将系统的串口与PC机串口相连,打开已经设置好参数的超级终端。将BOOT0跳线为0,BOOT1为0或1都可以。按住IAP功能选择按键,给系统上电。此时,在超级终端就会显示IAP功能主界面,如图7所示。

Flash存储分配

IAP功能主界面

  在键盘上按1选择待载入二进制文件,界面上会出现提示语。在“传送”菜单中选择传送文件后,只需几秒钟可以将6 KB左右的文件烧写到Flash。下载完后,在键盘上按2或复位就可以直接执行应用程序了,如图8所示。虽然IAP功能使用的是USART1口,但进入应用程序后就可以正常使用USART1口。随时可以通过复位后按住IAP功能选择键来进行IAP方式烧写应用程序。

成功下载应用程序

  结 语

  STM32F10x处理器性能出众,已被广泛应用于各种场合。其IAP功能给用户带来了极大方便,使得产品的固件更新快捷、简单。本文阐述了IAP的基本原理,并详细描述了如何在STM32F10x处理器平台中实现IAP功能,并在所设计的系统中进行了IAP实验。实验证明,该款处理器的IAP功能可靠、快捷。



评论


相关推荐

技术专区

关闭
唐僧姓什么 什么食物含蛋白质高 440分能上什么大学 一直腹泻是什么原因 骨肉瘤是什么病
门面是什么意思 阴道排气是什么原因 一个提手一个京念什么 什么的北京城 智商税什么意思
犯了痔疮为什么老放屁 xy什么意思 甘草泡水喝有什么好处和坏处 头骨凹陷是什么原因 花儿像什么比喻句
金国人是现在的什么人 脑袋疼是什么原因 尿酸高吃什么水果 养肺补肺吃什么药最好 ygk是什么牌子
3月是什么星座的hcv8jop1ns2r.cn 草字头加弓念什么hcv8jop3ns6r.cn 屋漏偏逢连夜雨是什么意思hcv8jop9ns6r.cn fml什么意思hcv8jop8ns4r.cn 深水炸弹什么意思hcv9jop1ns9r.cn
胸闷气短是什么原因造成的xinmaowt.com 为什么会有同性恋hcv9jop2ns4r.cn 颈椎病用什么药baiqunet.com 毛泽东什么时候逝世hcv7jop7ns2r.cn 温煦是什么意思hcv7jop6ns3r.cn
牛在五行中属什么hcv8jop2ns3r.cn 米杏色是什么颜色hcv9jop0ns1r.cn 褶子是什么意思hcv9jop5ns7r.cn 神奇的近义词是什么hcv9jop4ns4r.cn 口腔扁平苔藓挂什么科hcv8jop5ns5r.cn
小孩咳嗽不能吃什么食物hcv9jop8ns0r.cn 子宫轻度下垂有什么办法恢复hcv7jop9ns3r.cn 正常的心电图是什么样的图形hcv9jop7ns9r.cn 胆固醇高会引起什么病hcv7jop6ns1r.cn 耳朵背后有痣代表什么hkuteam.com
百度