历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2019年01月07日 | STM32F103C8T6 IAP程序

2019-01-07 来源:eefocus

项目需要加入IAP功能,STM32F103与Nordic 51822一样也是 Cortex M的核心,只不过一个M0一个M3而已。所以我想其升级原理也大致是将Flash划分成不同的空间,一部分用来存放BootLoader,以实现升级,一部分用来存放用户应用程序。


百度了STM32 IAP,跳出来一大堆文章和代码,多数写得比较混乱,能把原理描述清楚,写得比较有条理只有战舰的文章了。连接:


http://www.openedv.com/posts/list/11494.htm


看完之后,原理大概都明白了。


只不过战舰的例程是 STM32F407的,而且其Bootloader部分程序比较大,需要删除很多代码,改起来比较耗时间。


在网上也搜索了一些资源,接近F103型号的,但是下载下来发现要使用的话还是有比较多的问题,代码也写的不规范。

 

决定还是官网找,开始时找到STM32 Cube生产的IAP例程,芯片型号还不是 STM32 F103C8T6的,改了一下,发现要改动地方太多。 在STM32F103C8T6的官方网页的Design Resources列表里面找,搜索"in-application-program",搜索到一个串口IAP的例程 ,里面有文档也有例程,但是例程下载下来却是和IAP毫不沾边,我也是醉了。 于是换个其它芯片型号,终于找到正确的软件包


STSW-STM32008


在main()函数里面可以知道,程序上电时会检测某个IO口电平,如果电平符合预期则进入IAP程序,如果不符合则跳到用户程序。


因此需要根据自己芯片型号作以下几个改动:


1,Keil项目的"Option for target"面板中,"更改成自己的芯片型号。


2,Keil项目的"Optrion for target"面板中,"C/C++"选项卡中,将"STM32F10X_HD_VL"删掉,然后加上"STM32F10X_MD".   因为STM32F103C8T6是属于MD的。


3,"stm32100e_eval.h" 文件中搜索 push-button 将按键(IO)口修改成自己想要的IO口,譬如PA4。


4,main()函数中, if (STM_EVAL_PBGetState(BUTTON_KEY)  == 0x00)这行是IO检测的,默认检测低电平,根据自己需求变更。


5,修改串口,默认是使用Usart1的,而我想用Usart3,发现项目工程只支持Usart1和Usart2。因此需要自己加上Usart3的驱动,分别在 stm32_eval.h 和 stm32_eval.c中加上相应的代码,加起来是很简单的。


6,改好 Uart 的驱动后,将IAP_Init()函数里面的串口初始化

STM_EVAL_COMInit(COM1, &USART_InitStructure)中的COM1改成COM3。


7,将common.c中,所有EVAL_COM1的地方改成EVAL_COM3.


8,Keil工程的MDK-ARM文件夹中,将启动文件改为使用 startup_stm32f10x_md.s


9,common.h中默认flash size是128K的(0x20000),而STM32103C8T6只有64K, 因此需要将它改成64K的


 #define FLASH_SIZE                        (0x10000)  /* 64 KBytes */



整个工程中,common.c是关于串口通信协议的,ymoderm是一个串口文件传输的协议


用户程序需要编译成.bin文件,然后才能用来升级。


升级工具可以用SecureCRT, 它支持Y-Moderm协议。


用户程序默认起始地址是 0x8003000,即偏移0x3000,用户程序中相应设置要对得上。


用户程序只需要设置两个地方,


第一个是"Option for target"中"Target"选项卡中将Flash的ROM起始地址改为 0x8003000


第二步是工程里面搜索VECT_TAB_OFFSET的宏定义,将其值由 0x0 改成 0x3000。


战舰的教程是说在main()函数开始地方加上一行类似


SCB->VTOR = FLASH_BASE | 0x3000;


这样的代码,但经验证程序升级完之后无法正常运行。

--------------------- 


推荐阅读

史海拾趣

贝特莱公司的发展小趣事

在市场竞争日益激烈的背景下,贝特莱注重品牌建设和市场推广。通过不断提升产品质量和创新能力,优化售后服务体系,贝特莱在市场上树立了良好的品牌形象。同时,公司还积极拓展海外市场,参与国际竞争,进一步提升了其在全球电子行业的影响力。

这些故事只是贝特莱在电子行业发展历程中的一部分。作为一个国家级高新技术企业,贝特莱在技术研发、产品创新、市场拓展等方面都取得了显著的成绩。未来,随着电子行业的不断发展,贝特莱将继续保持其创新精神和市场竞争力,为行业的进步做出更大的贡献。

Elytone Electronics Co Ltd公司的发展小趣事

进入XXXX年代,随着电子技术的飞速发展,Elytone公司意识到技术创新是企业持续发展的关键。公司投入大量资金引进先进设备和研发人才,成功开发出一系列具有竞争力的电子产品。这些产品在市场上获得了良好的口碑,为公司的快速发展奠定了坚实基础。

Cal-Chip Electronics公司的发展小趣事

随着公司实力的不断增强,Cal-Chip Electronics公司开始将目光投向国际市场。在XXXX年,公司成功开拓了欧洲市场,并在当地设立了分支机构。随后,公司又陆续进入北美、亚洲等多个国家和地区,实现了业务的全球化布局。在国际市场的拓展过程中,公司不仅提升了品牌知名度,也积累了丰富的国际运营经验。

DEWALT公司的发展小趣事

随着全球经济的不断发展和市场需求的不断增长,DEWALT公司开始积极拓展海外市场。公司在全球范围内设立了多个生产基地和销售网络,为不同地区的用户提供优质的产品和服务。同时,DEWALT还积极与全球知名的企业和品牌进行合作,共同推动电动工具行业的发展。在未来,DEWALT公司将继续致力于技术创新和产品拓展,为全球用户提供更加高效、耐用的电动工具产品。

HANBIT Electronics公司的发展小趣事

DEWALT公司始终将技术创新作为企业发展的核心动力。在创始人雷蒙得伟的领导下,公司不断投入研发,推出了一系列具有创新性的电动工具产品。这些产品不仅具有高效、耐用的特点,还满足了不同用户的需求。通过不断的技术创新和产品拓展,DEWALT公司逐渐在电动工具行业中占据了重要地位。

DETCO公司的发展小趣事

为了进一步拓展全球市场,ElectronicsCorp制定了国际化战略。公司先后在北美、欧洲和南美等地设立了研发中心和生产基地。这些海外机构不仅为ElectronicsCorp提供了更广阔的市场空间,还使其能够更深入地了解不同地区的消费者需求和文化背景。通过本土化战略的实施,ElectronicsCorp逐渐在海外市场取得了成功。

问答坊 | AI 解惑

ARM7与ARM9的区别

有朋友问我ARM7有ARM9的区别,在此进行解答。 ARM7内核是0.9MIPS/MHz的三级流水线和冯·诺伊曼结构; ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。 arm7没有mmu,arm720T是MMU的;arm9是有mmu的,arm940T只有Memory protection unit.不是 ...…

查看全部问答>

要求加精:笔记本硬件结构终极教程

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

警惕!碰到这8种订单客户不要随便接。

]一、           对方要求你免费提供样品的不能接,当对方以各种理由要求寄样品,收到样品后却说产品不过关,让你重新再寄,后面就没有了下文,或者说你的产品报价高了,而对方却拿着你的样品找别的公司做 ...…

查看全部问答>

在AP程序里面,我通过GetForegroundWindow( )函数找到当前顶层的窗体,然后通过PostMessage( )给这个窗体发消息,那个顶层窗体怎么

在AP程序里面,我通过GetForegroundWindow( )函数找到当前顶层的窗体,然后通过PostMessage( )给这个窗体发消息,那个顶层窗体怎么收不到消息啊?都不进顶层窗体的WindowProc( )函数。…

查看全部问答>

bluetooth avrcp

WINCE6.0的系统,支持A2DP, 使用消息队列等待来自蓝牙耳机的命令(播放, 暂停, 下一首,上一首等). 播放器用自己的, 不是Media Player,可以收到暂停, 下一首,上一首的命令,就是收不到播放的命令,另外,耳机端按了暂停之后,耳机端就没声了,主机是收到暂 ...…

查看全部问答>

想学习一下电子方面,谁能介绍下书籍

介绍一下电路基础,数字电路,模拟电路,三本书籍,能够自学用。啰嗦点无所谓,内容清楚就可以,谢谢…

查看全部问答>

置换/转让开发板EK-LM3S8962

本人手上有闲置 原装TI公司的 LM3S8962 Evaluation Kit 开发板(9.9成新),和2.4寸的TFT(带触摸屏)LCD ,等一些电子元件希望和大家置换或转让或赠送。 TI的 LM3S1138(一片) LM3S608(一片)STM8S105K(两片)  ISO124-DIP(两片)  ...…

查看全部问答>

关于DSP的寄存器

DSP中的寄存器怎么对应到它的地址上去的啊?…

查看全部问答>

【MSP430共享】用MSP430 实现基于PCB 的电容式接触传感

摘要: 这个应用报告讨论了如何用MSP430微处理器来设计单接触电容传感器接口的问题。采用具有超低功耗特性和集成外围设备的MSP430,单接触用户接口可以很轻松地实现。这个应用报告提供了技术概述,系统关注的细节和使用MSP430系列进行电容传感器设 ...…

查看全部问答>