完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
stm32f051是Cortex-M0核的,我没用过这个。不过在同为Cortex-M0的LPC1114上看到了IAP的功能描述,一般的MCU都是有IAP功能的。只知道Cortex-M3上向量表偏移量寄存器( VTOR )的地址是0xE000_ED08 中断向量表偏移寄存器是属于NVIC中的一个寄存器,NVIC是ARM核内的,所以估计这个地址说不定是一样的,试试看。 因为IAP方面的应用有些偏近底层,很多资料上都不讲,我手上的资料也查过,确实查不到这个寄存器的地址,连寄存器名都找不到。 |
|
|
|
|
|
查到了,传个ARMv6-M汇编指令体系结构的用户手册给你,这个应该是很权威的,在里面搜索关键字"VTOR",
在263页 : 0xE000ED08 VTOR RW 0x00000000 Vector Table Offset Register, VTOR on page B3-267 地址一样和CM3。
|
|
|
|
|
|
stm32f051的ARM核是Cortex-M0的,Cortex-M0核的ARM汇编指令体系结构版本是ARMv6-M的,所以这个手册应该是可以参考的。当然要是stm32f051直接提到具体是什么样的就是什么样的,毕竟芯片生产商也不一定绝对按照ARM的标准来做。
你描述的问题应该是程序跳转过程中的问题,要不行,把代码发给我,我帮你看看。 主要的流程: 1.拷贝中断向量表到RAM中 2.设置中断向量表偏移寄存器 3.设置sp堆栈指针 4.跳转到新程序在中断向量表中的复位向量处指向的地址 |
|
|
|
|
|
我感觉主要是app那边设这中断向量表的问题 我在M3和M4上都实现了iap功能 在M0上没办法设置 按照armv6结构上哪个中断向量偏移寄存器地址设置了一下 程序执行到跳转之后就没反应了 |
|
|
|
|
|
一个中断需要软件重定向就用一个函数指针,多个就用多个,各自用各自的。
就算是bootlader有选择性的启动不同的app,亦或是appx后启动新的appy,也是一样的,一个中断使用一个函数指针。 |
|
|
|
|
|
上到ST的官网查了相关资料,没找到这个VTOR,应该是没有这个寄存器。你给出的方法其实就是在中断中用软件的方式来重定向ISR。这个方法当然是通用的。 其实呢,对于某个硬件外设对应的中断。这个函数指针可以安排在数据区,在bootloder的时候,初始化它为bootloder时需要调用的ISR函数。如果跳转到app的时候呢,就可以重新定向这个函数指针到app自己需要调用的ISR函数。软件重定向的思想。 |
|
|
|
|
|
2183 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2011 浏览 3 评论
4612 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2154 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2687 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 01:12 , Processed in 0.695393 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号