stm32 iapf051是否支持IAP功能,能做在线固件更新功能吗

后使用快捷导航没有帐号?
查看: 5023|回复: 17
stm32f051支持IAP功能么
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
stm32f051支持IAP功能么&&我没有找到中断向量表便宜寄存器 能做在线更新固件功能么
stm32f051是Cortex-M0核的,我没用过这个。不过在同为Cortex-M0的LPC1114上看到了IAP的功能描述,一般的MCU都是有IAP功能的。只知道Cortex-M3上向量表偏移量寄存器( VTOR )的地址是0xE000_ED08&
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
回复 楼主 asdbhk 的帖子
stm32f051是Cortex-M0核的,我没用过这个。不过在同为Cortex-M0的LPC1114上看到了IAP的功能描述,一般的MCU都是有IAP功能的。只知道Cortex-M3上向量表偏移量寄存器( VTOR )的地址是0xE000_ED08
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
是的&&在M3和M4的都有中断向量表便宜寄存器 地址也一样 但是在M0里没有找到&&
我也认为应该是支持的&&但是找不到这个寄存器 纠结
中断向量表偏移寄存器是属于NVIC中的一个寄存器,NVIC是ARM核内的,所以估计这个地址说不定是一样的,试试看。
因为IAP方面的应用有些偏近底层,很多资料上都不讲,我手上的资料也查过,确实查不到这个寄存器的地&
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
原帖由 asdbhk 于
08:44 发表
是的&&在M3和M4的都有中断向量表便宜寄存器 地址也一样 但是在M0里没有找到&&
我也认为应该是支持的&&但是找不到这个寄存器 纠结
中断向量表偏移寄存器是属于NVIC中的一个寄存器,NVIC是ARM核内的,所以估计这个地址说不定是一样的,试试看。
因为IAP方面的应用有些偏近底层,很多资料上都不讲,我手上的资料也查过,确实查不到这个寄存器的地址,连寄存器名都找不到。
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
呵呵,查到了,传个ARMv6-M汇编指令体系结构的用户手册给你,这个应该是很权威的,在里面搜索关键字&VTOR&,
在263页&&:
0xE000ED08 VTOR RW 0x
Vector Table Offset Register, VTOR on page B3-267
地址一样和CM3。
本帖子中包含更多资源
才可以下载或查看,没有帐号?
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
我按照那个地址试了 FLASH擦写功能没问题 app程序么有执行
stm32f051的ARM核是Cortex-M0的,Cortex-M0核的ARM汇编指令体系结构版本是ARMv6-M的,所以这个手册应该是可以参考的。当然要是stm32f051直接提到具体是什么样的就是什么样的,毕竟芯片生产商也不一定绝对按照ARM的&
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
原帖由 asdbhk 于
09:06 发表
我按照那个地址试了 FLASH擦写功能没问题 app程序么有执行
stm32f051的ARM核是Cortex-M0的,Cortex-M0核的ARM汇编指令体系结构版本是ARMv6-M的,所以这个手册应该是可以参考的。当然要是stm32f051直接提到具体是什么样的就是什么样的,毕竟芯片生产商也不一定绝对按照ARM的标准来做。
你描述的问题应该是程序跳转过程中的问题,要不行,把代码发给我,我帮你看看。
主要的流程:
1.拷贝中断向量表到RAM中
2.设置中断向量表偏移寄存器
3.设置sp堆栈指针
4.跳转到新程序在中断向量表中的复位向量处指向的地址
一个月前刚好从底层研究过这个问题,也解决了iap的问题。本来还想在论坛发个帖子的,但是感觉搞这东西的人太少,搞上层的人也不愿意看这些东西(看不懂应该算是比较大的因素),又因为出差忙就算了没发。
下次不忙了,整理一下材料再发出来吧。
[ 本帖最后由 lr2131 于
13:10 编辑 ]
void jump_app(uint32_t addr)
tmp=*(volatile uint32_t*)
if((tmp&0x2FFE0000)==0x)
JumpAddress = *(__IO uint32_t*) (addr + 4);
Jump_To_Application =(pFu&
我感觉主要是app那边设这中断向量表的问题
我在M3和M4上都实现了iap功能
在M0上没办法设置
按照armv6结构上哪个中断向量偏移寄存器地址设置了一下
程序执行到跳转之后就没反应了
等我整理一下在发上来吧&
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
回复 7楼 lr2131 的帖子
我感觉主要是app那边设这中断向量表的问题
我在M3和M4上都实现了iap功能
在M0上没办法设置
按照armv6结构上哪个中断向量偏移寄存器地址设置了一下
程序执行到跳转之后就没反应了
等我整理一下在发上来吧& &公司网络不能上传
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
回复 7楼 lr2131 的帖子
void jump_app(uint32_t addr)
& & & & uint32_
& & & & tmp=*(volatile uint32_t*)
& & & & if((tmp&0x2FFE0000)==0x)
& & & & & & & & JumpAddress = *(__IO uint32_t*) (addr + 4);& & & & & & & &
& & Jump_To_Application =(pFunction) JumpA //(pFunction) 0x10004;
& & /* Initialize user application's Stack Pointer */
& & __set_MSP(*(int32u*) addr);
& & Jump_To_Application();
& & & & }& & & &
这几天去上课了
这个是跳转程序的函数
能帮我分析一下么
这个我倒是看过了,能懂一些。
void jump_app(uint32_t addr)
tmp=*(volatile uint32_t*)//addr是app的首地址,其实就是中断向量表中的第一项,addr其实就是MSP的初始值&
在线时间65 小时
威望311 分
TA的帖子TA的资源
一粒金砂(高级), 积分 311, 距离下一级还需 189 积分
一粒金砂(高级), 积分 311, 距离下一级还需 189 积分
不要瞎整了,Cortex-m0并没有中断向量地址偏移寄存器。这个只有M3和M4才有的。请看STM32F0xxx Cortex-M0 programming manual,Page84,
楼主可以尝试这样,BootLoad 程序启始于复位地址,复位首先进入Boot程序,然后跳转到应用程序以及应用程序编写和M3一样,应用程序不需设置向量表偏移,向量表采用下面的方式维护。
Bootload处理所有中断向量。当需进入应用执行时。置g_bAppRun为真
所有的32个中断向量按以下方式实现,APP_START_ADR为应用代码起始地址,ISR_HAND_OFFSET为中断向量在中断向量表中的仿移量(4字节单位,每个中断向量均不同)
typedef void (*pFun)(void);
void ISRHandle(void)
& & if(g_bAppRun)
& && &&&p = (pFun)(APP_START_ADR + ISR_HAND_OFFSET);
& && &&&P = BootLoadI
& & (*p)();
这种方式其实不但适合于M0,其它所有支持在线写代码区的单片机都可以实现,只是细节修改而已(主要是链接器)。
[ 本帖最后由 xg_qing 于
16:46 编辑 ]
能给传个小例程么
没弄过这种模式的
第一次弄这种没有偏移寄存器芯片的iap&
补充,一个中断需要软件重定向就用一个函数指针,多个就用多个,各自用各自的。
就算是bootlader有选择性的启动不同的app,亦或是appx后启动新的appy,也是一样的,一个中断使用一个函数指针。&
上到ST的官网查了相关资料,没找到这个VTOR,应该是没有这个寄存器。你给出的方法其实就是在中断中用软件的方式来重定向ISR。这个方法当然是通用的。
其实呢,对于某个硬件外设对应的中断。这个函数指针可以安排&
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
回复 10楼 xg_qing 的帖子
上到ST的官网查了相关资料,没找到这个VTOR,应该是没有这个寄存器。你给出的方法其实就是在中断中用软件的方式来重定向ISR。这个方法当然是通用的。
其实呢,对于某个硬件外设对应的中断。这个函数指针可以安排在数据区,在bootloder的时候,初始化它为bootloder时需要调用的ISR函数。如果跳转到app的时候呢,就可以重新定向这个函数指针到app自己需要调用的ISR函数。软件重定向的思想。
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
原帖由 asdbhk 于
15:57 发表
void jump_app(uint32_t addr)
& && &&&uint32_
& && &&&tmp=*(volatile uint32_t*)
& && &&&if((tmp&0x2FFE0000)==0x)
& && && && && & JumpAddress = *(__IO uint32_t*) (addr + 4);& && && && && &
& & Jump_To_Application =(pFun ...
这个我倒是看过了,能懂一些。
void jump_app(uint32_t addr)
& && &&&uint32_
& && &&&tmp=*(volatile uint32_t*)//addr是app的首地址,其实就是中断向量表中的第一项,addr其实就是MSP的初始值的地址,从flash的app的首地址中取出这个MSP的初始值给tmp。
& && &&&if((tmp&0x2FFE0000)==0x)// 检查MSP的初始值是否合法,具体怎么才合法,我也早忘光了,你可以查查资料吧,应该是和具体芯片的内存分布或者说内存映射有关。
& && && && && & JumpAddress = *(__IO uint32_t*) (addr + 4);&&//&&addr + 4 ,这个就是app中断向量表中复位向量的地址,像上面那样取出它里面的值赋给JumpAddress 。& && && &&&
& & Jump_To_Application =(pFunction) JumpA // 现在再对JumpAddress 做一下类型转化,赋给Jump_To_Application这个函数指针,那么这个函数指针就指向的是APP的复位向量指向的地方,不严格的说法就是复位函数吧。调用整个函数就是APP的开始
& & /* Initialize user application's Stack Pointer */
& & __set_MSP(*(int32u*) addr);//这里你注意,刚只是检查了MSP的合法性,但是并没有对app的MSP做初始化,目前还是是在bootloader下么。如果不做这一步,直接走下一句跳转的话,那么MSP的值可能会导致溢出,至少会导致浪费,所以要先初始化MSP,然后走下一句再跳转。这里其实是用汇编写的,毕竟SP寄存器是不能通过C来读写的。当时我在这个地方自己试着写了下汇编语句,其实很简单,才2句还是3句忘了,但是不敢确定稳定性,后来反汇编时看到 __set_MSP()的汇编和我的相同才放心。
& & Jump_To_Application();// 到这里就完了,开始APP的运行嘛,不细说了。
& && &&&}& && &&&
//这整个函数除开检查MSP初始值的合法性外,主要就做了两件事:
1.重新初始化MSP
估计芯片里面的boot固件也是这么干的。
[ 本帖最后由 lr2131 于
10:29 编辑 ]
嗯 这个我也懂点 M3和M4都是这么做的
就像十楼说的那样 没有中断向量偏移寄存器 那个地址没写成功
有点小纠结&
在线时间228 小时
威望3062 分
芯币4946 枚
E金币280 枚
TA的帖子TA的资源
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
五彩晶圆(初级), 积分 3062, 距离下一级还需 438 积分
回复 10楼 xg_qing 的帖子
补充,一个中断需要软件重定向就用一个函数指针,多个就用多个,各自用各自的。
就算是bootlader有选择性的启动不同的app,亦或是appx后启动新的appy,也是一样的,一个中断使用一个函数指针。
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
回复 12楼 lr2131 的帖子
嗯 这个我也懂点 M3和M4都是这么做的
就像十楼说的那样 没有中断向量偏移寄存器 那个地址没写成功
有点小纠结
在线时间19 小时
威望110 分
TA的帖子TA的资源
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
一粒金砂(中级), 积分 110, 距离下一级还需 90 积分
回复 10楼 xg_qing 的帖子
能给传个小例程么
没弄过这种模式的
第一次弄这种没有偏移寄存器芯片的iap
在线时间4 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
一粒金砂(中级), 积分 10, 距离下一级还需 190 积分
同求大神给个小例子,关于软件重定位的例子。我在做的IAP,跳转到APP之后,没有办法响应外部中断,但是可以响应定时器中断。stm32F051的片子
在线时间1 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我现在写的一个能跳转进入APP,但是APP定时器中断没效果
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
Powered by
逛了这许久,何不进去瞧瞧?  新手必看,关于STM32其他问题  1、使用JTAG download程序至STM32F205XX(with Cortex-M3)  问:請教各位先進,若欲使用JTAG interface下載程序至STM32F205XX的板子,似乎一般是透過SEGGER的J-link,是否可使用其他的JTAG-USB下載線如Altera出的USB Blaster?  又是否只要符合JTAG規範的傳輸線皆可?  答1:只要支持M3并且支持STM32F2XX系列就可以,不一定非要JTAG,也可以使用SWD。  答2:ARM KEIL ULINK也行,兼容性非常好呀!  2、STM32触摸屏  问:我想用STM32来触摸一款触摸屏,因为我现在还不了解STM32以及触摸屏,所以我想问一下,具体用那款单片机型号最好? 最好是STM32内部已经具有触摸屏的控制器了。屏有没有数据传输总线是32位的,正好和单片机总线一样 。另要求屏的色彩深度也是32位或者是24位。3.2寸左右,这个可大也可小点。 能不能也推荐一款触摸屏的型号,以及相关资料。  答:1、这个需要根据显示屏来决定,市场上也有很多触摸的显示屏,STM32可以用过SPI、FMCS、IO口等来控制,这个要看你选择的类型 2、型号和资料,这个要找厂家要,厂家一半都会给你合适的建议和 源代码。  3、STM32可以做什么  问:学习了STM32可以做什么?有什么用途或者前途,请告诉,不胜感谢。  答:可以用的方面比较多,比如工业、消费、医疗等。这个要根据产品的需求来决定使用的芯片。  4、STM32F2X系列能能驱动多大尺寸TFTLCD呢?用FSMC模式  问:STM32F2X系列能能驱动多大尺寸TFTLCD呢?用FSMC模式,显示简单的菜单,参数等操作  答:这个没有具体的参数,个人认为10.0一下都没问题。  5、VDD与VSS的去藕电容如何处理?  问:VDD与VSS的去藕电容如何处理?  答:1、每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容 2、在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容  6、系统时钟的监控和切换的作用是什么?  问:系统时钟的监控和切换的作用是什么?  最佳答案:STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE)失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。  7、PVD的作用是什么?  答:在应用开发中,通常都要考虑到当系统电压下降或掉电状况,一旦出现该状况应对控制系统加以保护。故在程序中需要加入对系统电压的监控。当供电电压降低到某一电压值时,需要系统进入特别保护状态,执行紧急关闭任务:对系统的一些数据保存起来,同时对外设进行相应的保护操作。  8、STM32的三种低功耗模式是什么?  答:1、睡眠模式Sleep:电压调节器开启,Cortex-M3内核停止运行,外设保持运行态; 2、停止模式Stop:电压调节器可选择性开启,所有外设时钟、PLL、HSI和HSE被关闭,Cortex-M3内核和所有外设停止运行,保留SRAM和寄存器的内容; 3、待机模式Standby:电压调节器关闭、整个1.8v区域断电。除了备份区域和待机电路的寄存器以外,SRAM和寄存器的内容全部丢失。  9、STM32103RB的TIM2 channel1以及UART2的CTS都是PA0 pin, 他们是怎么区分的?  答:IC的一根管脚,做多种外设的复用pin,很常见,在PA0上,只能作为一种外设的管脚,但两个外设能同时用吗,当然是可以的。可以设置STM32中有的寄存器AFIO_MAPR来配置复用管脚及外设接口的重新映射,比如你选择PA0为UART2的CTS,PA0肯定不能再作为TIM2的channel1,但可以设置TIM2的channel1的管脚为PA15,请参考如下寄存器说明: Bits 9:8 TIM2_REMAP[1:0]: TIM2 remapping These bits are set and cleared by software. They control the mapping of TIM2 channels 1 to 4 and external trigger (ETR) on the GPIO ports. 00: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) 01: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) 10: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) 11: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)  10 CSMA/CA算法  问:STM32W108CBU64执行一次CSMA/CA算法是延时多长时间?  RadioTransmitConfig radioTransmitConfig = {  TRUE, //waitForAck  TRUE, //checkCca  RADIO_CCA_ATTEMPT_MAX_DEFAULT, //ccaAttemptMax  RADIO_BACKOFF_EXPONENT_MIN_DEFAULT, //backoffExponentMin  RADIO_BACKOFF_EXPONENT_MAX_DEFAULT, //backoffExponentMax  TRUE //appendCrc  };  答1:更简单的可以设置两个断点,看下右下方的运行时间,就知道了!  答2:这个没有计算过,你可以在计算前加个定时器获取值,计算完以后再获取一下定时器的值,这样就知道时间了。  11、STM32F4系列软件仿真问题  问:STM32F4系列能用Keil4.54,的debug进行软件仿真吗? 我一仿真,程序指针跳到0x处。很奇怪  而且peripherals菜单选项没有了。 请问这是怎么回事?  答:可以。说明你程序有错误,而不能跳到启动。你应该下载一个最新的KEIL  12、进入SLEEP模式的省电要操作哪些流程?  问:进入SLEEP模式的省电要操作哪些流程?  最佳答案:  1、关闭无需等待中断或事件的外设时钟;  2、设置进入机制(Sleep-Now或Sleep-on-Exit);  3、设置系统进入SLEEP模式。  13、STM32W 的 wireshark 用Mxchip 的ADK-DK 可以充当吗?  问:STM32W 的 wireshark 用Mxchip 的ADK-DK 可以充当吗?  答:Wireshark 抓包器需配合MXCHIP的sniffer-W使用,ADK-DK无法充当。  14、STM8A不能从CAN接收中断中唤醒Halt模式  问1:我是做车载CAN通信的,使用STM8AF51AA的MCU,但是发现CAN接收中断不能唤醒Halt模式,但是改成Wait模式就可以唤醒,Walt模式的功耗过高,不符合车厂的要求。说明书上是说两种都可以唤醒的,我现在不知道是我的设计有问题还是芯片不支持,哪位大虾遇到这种情况的,可以跟大家一起分享吗?谢谢啦!  答1:1、WKUIE中断开启了吗? 2、支持该功能,你怎么判断他没有进入唤醒?第一包的数据会丢失。  问2::WKUIE中断已经开启,因为我在Wait模式下可以正常唤醒,所以中断设置是正常的,我在中断函数里面打个断点,等待中断的到来。  答2:这个时候仿真不管用。你最好使用LED和串口调试信息  15、F0 discovery 固件库在IAR6.0上运行时提示错误  问:IAR ELF Linker V6.40.3.54009/W32 for ARM  Copyright
IAR Systems AB.  Error[Li005]: no definition for "SYSCFG_EXTILineConfig" [referenced from F:新建文件夹STM32F0系列测试程序Test1DebugObjstm32f0_discovery.o]  是哪里的问题呢?我运行demo就无错误  Error[Li005]: no definition for "EXTI_Init" [referenced from F:新建文件夹STM32F0系列测试程序Test1DebugObjstm32f0_discovery.o]  2 358 bytes of readonly code memory  90 bytes of readonly data memory  1 057 bytes of readwrite data memory  Errors: 2  Warnings: none  Link time: 0.05 (CPU) 0.05 (elapsed)  Error while running Linker  Total number of errors: 2  Total number of warnings: 0  答:说明这2个没有被定义,请仔细看一下,是否正确定义。  16、系统时钟的监控和切换的作用是什么?  问:系统时钟的监控和切换的作用是什么?  最佳答案:STM32作为一个可靠稳定的微处理器,但是不能排除由于某些外界特殊因素可能造成STM32的外部振荡器失效,所以在芯片中需要一种包含机制能够在STM32运行时,一旦外部晶体振荡器(HSE)失效,切换STM32的系统时钟源到一个稳定的时钟源,以保证STM32能够继续运行,并进行相应的保护操作。  17、STM32W108CBU64执行一次CSMA/CA算法是延时多长时间?
  问: RadioTransmitConfig radioTransmitConfig = {  TRUE, //waitForAck  TRUE, //checkCca  RADIO_CCA_ATTEMPT_MAX_DEFAULT, //ccaAttemptMax  RADIO_BACKOFF_EXPONENT_MIN_DEFAULT, //backoffExponentMin  RADIO_BACKOFF_EXPONENT_MAX_DEFAULT, //backoffExponentMax  TRUE //appendCrc  };
  最佳答案:更简单的可以设置两个断点,看下右下方的运行时间,就知道了!  18、STM32F407和Android系统的平板电脑通讯问题  问:请问我想用stm32f407的usb和Android系统的平板电脑通讯,现在我知道在xp和w7系统下都可以做到,那在Android下能兼容吗?如果不兼容都需要做哪些工作呢?希望能进快给我答复谢谢。  答1:按照android的通讯协议做就可以。  答2:这个方向我也正在做、已经琢磨了很长时间了、有难度、关键是硬件不懂软件、软件不懂硬件还有协议的问题、后来考虑了个方法但是还没有实施你可以实施看、用stm32枚举成U盘、将你要表达的  协议写成文件格式、你需要收的文件也由android做成文件、以文件的形式来交互协议  19、关于100Pin MCU FSMC的应用咨询  问:根据ST datasheet描述,100pin mcu 的fsmc只支持NE1和NCE2,意味着只能外挂Nor/PSRAM和无中断功能的Nand,并且低地址A[15:0]和D[15:0]是复用方式。  请问:  1:NADV信号是否只有在Nor模式下才能有效输出锁存信号,而在SRAM模式下输出无效信号?  2:如果外挂一颗IS64LV25616这样的SRAM,该如何将复用的A和D分开?  3:如果使用100pin这样的FSMC,是否一定要外加地址锁存器,诸如74XX573这样的芯片才能将复用的A和D分开?  4:如果使用100pin这样的FSMC,市场上有没有与之对应的Nor和SRAM,可以自己解锁出总线上的A和D,ST有没有这样的chip?  答:1、我要看看手册 2、AD复用,也就是只能用1个 3、最好加锁存器 4、有对应SRAM,这个你可以参考各个开发的设计  20、stm32F207的相关资料从何处下载?  问:stm32F207的相关资料从何处下载?比如说,库函数,应用说明,时钟等等。最近做项目要使用stm32F207,但对这款芯片了解甚少。  答:您好,这个可以到社区的资料下载。或者到官方网站的F20X资料区下载。  21、STM32的官方例程在哪下载呢?  问:STM32的官方例程在哪下载呢?  答:你好,社区的资料下载栏目,以及论坛里都可以找到。  详见:1、 http://www.stmcu.org/download/index.php?act=ziliao  2、
http://www.stmcu.org/bbs/forumall_244.html  22、用内部HSI时钟时,外部时钟引脚应该悬空还是接地?  问:用内部HSI时钟时,外部时钟引脚应该悬空还是接地?  最佳答案:悬空。接地都可以。最好是接地  23、stm32f103c8t6芯片烧写问题  问:如题芯片首次jlink烧写程序没有任何问题,第二次烧写,jlink就不能识别,请问什么原因?  现在是第一次连接上jlink以后,jlink就出现问题了,直接显示是红灯了还有一个问题,jtag的上拉下拉电阻是不是可以不接?还有32.768Khz的晶振是不是也可以没有?  答:第一次烧录时应该是空的IC吧,没有烧录过任何CODE吧。用JLINK烧录完成后会自动断开连接,如果你没有对BOOT进行设置就不能再次烧录。BOOT设置可以查看DATA SHEET。  24、CPU休眠后无法唤醒  问:CPU休眠后,RTC无法让它唤醒,外部触发也不能唤醒,示波器测试小晶振,有正常的波形  答:这种情况也有可能是因为你对数组或者指针操作的时候引起的程序错误,而进入硬件错误中断。  25、请问STM32W108CBU64可以构成星型网络吗?  问:可以组成多少个子节点?  最佳答案:一个局域网可以有很多电脑,只要IP地址不一样就可以  26、请问各位大虾STM32F207的Camera接口支持ITU-R BT.656格式的数据输入吗?  问:本人想通过TVP5150将复合视频信号转为ITU-R BT.565后,经STM32F207的Camera接口送到LCD显示,不知道是否能实现,请各位指教。  答:可以,但是效果不是很好。毕竟频率才72Mhz。  27、LWIP和freertos的移植问题  问:请教大家一个问题,我现在想做lwip和freertos的移植,我在金牛 STM32F107_ETH_LwIP_V1.0.0例程的基础之上移植了freertos,为了验证我的系统移植没 有问题,首先我通过利用二值信号量的方式,实现了按键中断等简单程序,在这些都成功的情况下我把System_Periodic_Handle();做在了一个任务函数中,调用这个任务希 望实现telnet等基本功能,总是失败,最后我发现是不能进入总是进不去  EXTI2_IRQHandler(void)中断。我把中断这一块屏蔽了,在任务函数中加入  if (ETH_GetRxPktSize()!=0)  {  LwIP_Pkt_Handle();  }  这样就发现没有问题了,各项功能都能实现。为什么加上系统之后外部中断没有问题而网络中断不能进入,需要修改其他方面设置吗? 我又在官网(stmcu.org)上下载了STM32F107通过以太网实现在程序中编程(IAP) 就 是an3226.进行了简单的修改能在金牛板子上运行了。首先我将例程修改为通过 EXTI2_IRQHandler(void)中断实现TELNET,这样成功,这说明我对EXTI2_IRQHandler (void)的初始化是成功了。再次基础之上又做了freertos的移植,但是还是不成功。 在freertos下如何设置中断才能进如  void ETH_IRQHandler(void),还有什么方面存 在问题。菜鸟一个问的条理性不太好希望有人帮忙,万分感激。  答:这个问题发生的远不能因是你没有处理好中断,你还是处理一下吧.注意系统中中断向量列表处理。  28、stm32f107广域网互联  问:利用两块STM32F107开发板,分别置于两个不同的地区,如何通过公网建立通信,传输语音和其他的一些控制信息 是不是还要用到路由器之类的  答:如果你的距离不超过100米,可以直接用以太网连接,如果超过,就需要走网络了。如宽带,GPRS等。  29、关于LWIP和freertos的问题  问:请教大家一个问题,我现在想做lwip和freertos的移植,我在金牛 STM32F107_ETH_LwIP_V1.0.0例程的基础之上移植了freertos,为了验证我的系统移植没 有问题,首先我通过利用二值信号量的方式,实现了按键中断等简单程序,在这些都成 功的情况下我把System_Periodic_Handle();做在了一个任务函数中,调用这个任务希  望实现telnet等基本功能,总是失败,最后我发现是不能进入总是进不去 EXTI2_IRQHandler(void)中断。  我把中断这一块屏蔽了,在任务函数中加入  if (ETH_GetRxPktSize()!=0)  {  LwIP_Pkt_Handle();  }  这样就发现没有问题了,各项功能都能实现。为什么加上系统之后外部中断没有问题而 网络中断不能进入,需要修改其他方面设置吗? 我又在官网(stmcu.org)上下载了STM32F107通过以太网实现在程序中编程(IAP) 就 是an3226.进行了简单的修改能在金牛板子上运行了。首先我将例程修改为通过 EXTI2_IRQHandler(void)中断实现TELNET,这样成功,这说明我对EXTI2_IRQHandler (void)的初始化是成功了。再次基础之上又做了freertos的移植,但是还是不成功。 在freertos下如何设置中断才能进如voidETH_IRQHandler(void),还有什么方面存 在问题。菜鸟一个问的条理性不太好希望有人帮忙,万分感激~~~  答:这个问题发生的远不能因是你没有处理好中断,你还是处理一下吧.注意系统中中断向量列表处理.  30、keil环境下,如何将函数定义到指定的FLASH地址  问:keil环境下,如何将函数定义到指定的FLASH地址?定义常量变量到指定地址我知道可以通过__attribute__((at(addr))),但是函数的定义不会啊!  答:#program ROM 类似的语句,详情你可以参考帮助  31、STM32103 USART1死机  问:  void USART_Receive(USART_TypeDef* USARTx)  {  if (USART_GetFlagStatus(USARTx,USART_FLAG_RXNE)==SET)  {
  USART_ClearFlag(USARTx,USART_FLAG_RXNE);  s[0]=USART_ReceiveData(USART1);  delay(1000);
  s[1]=USART_ReceiveData(USART1);  delay(1000);  s[2]=USART_ReceiveData(USART1);  delay(1000);  write_char(s[0],s[1],s[2]); //发送数据到PC  //if(s[0]==0xff){GPIO_WriteBit(GPIOE,GPIO_Pin_0,Bit_SET);}
// //write_char(s[0],s[1],s[2]);  //
query_uart_command();
//命令判断  }
  }  上面程序在  发送FF的时候收到FF FF FF  发送FF 22的时候收到FF 22 22  发送FF 22 33时收到FF 22 22  之后再发送数据时串口不响应!!!  最佳答案:  stm32串口有个可以说是bug的地方,就是即使不使能溢出等其他错误中断的情况下,若发生溢出错误,仍会进入中断,而且常规检查中断的方法无法查到中断标志。所以办法就是在串口正常中断处理之后加清除中断的语句。具体网上可以找到。之前因为这个原因,程序经常死掉,结果是死在串口中断处理里,不停中断,有没有清除中断标志哦。  32、关于STM32读取陀螺仪的是电压值,怎么经过积分变成角度的问题  问:请问下,STM32读取陀螺仪的是电压值,怎么经过积分变成角度?而且积分函数怎么写呢?  答:陀螺仪有个参数a,叫做灵敏度,单位是(°/s/V),有个参数b,叫静止电压,单位是(V).  你写的程序有个参数叫做采样率c,单位是(S/s),有一个叫做ADC基准d,单位(V),有一个叫做ADC分辨率e,没有量纲,还有一个ADC输入值f.  知道什么叫做积分,什么叫做微分吗?能够不背概念,按照自己的理解说一遍吗? 假设,每次采样的u分别为u1,u2,u3,...u1000,  令v=u1+u2+u3+...+u1000,v就是从u1到u1000的采样时间内角度的偏差. 就是从采u1到采u1000期间,陀螺仪转过的。  33、STM32F107可以和TI的无线接发模块CC2520配合使用吗?  问:STM32F107可以和TI的无线接发模块CC2520配合使用吗?如果可以,可以怎么实现呢?烦请各位大侠多多赐教!小弟刚刚接触这方面的内容。再次拜谢!  答:无线接发模块CC2520是什么接口,i2c,UART,SPI?主要是看接口支不支持。。  34、关于STM32自带的bootloader的功能  问:STM32F107:memory mapping地址0xx0003FFFF中存放的是什么?如果是历程,则主要是做什么功能,这段程序能不能被读出?  答:在系统复位后,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式。 在从待机模式退出时,BOOT引脚的值将被被重新锁存;因此,在待机模式下BOOT引脚应保持为需要的启动配置。在启动延迟之后,CPU从地址0x获取堆栈顶的地址,并从启动存储器的0x指示的地址开始执行代码。这段代码被固定在MCU内,不能通过外部来修改。  35、关于STM32的代码加密问题  问:产品选用STM32F103,目前电路设计仅留了20pin的JTAG口。请问一下该如何加密。据说如果采用JLINK的secure选项加密,JLINK以后是无法识别和擦除的,请问一下该如何加密。目前串口、RST、BOOT脚单板上没有预留。谢谢。  答:Jlink加密以后,将不能读取FLASH中的内容,但是可以通过JFlashARM先将FLASH擦除掉,再进行新的程序烧写。  36、VDD与VSS的去藕电容如何处理?  问:VDD与VSS的去藕电容如何处理?  答:1、每对VDD与VSS都必须在尽可能靠近芯片处分别放置一个10nF~100nF的高频瓷介电容 2、在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容  37、stm32f107 每次ping通要重上电  问:您好,请教一下,107的芯片,phy是lan8700,仿照STM32F107_LK做的硬件,官方例程,mii模式,但是下载之后每次需要重新插拔电源才行,按下rst键或者下载都无法ping通,看了一下,phy初始化已经完成,不知道是哪里有问题,谢谢给分析下  答:应该是你发送完毕数据以后,没有结束。你仿真一下,PING完以后,下一次ping的时候,程序运行的状况。  至少你没有加PHY的reset,要不不会每次reset都无法ping通  38、仿真问题  问:keil4 STM32仿真里面怎样给USART1送入数据?  答:软件仿真的话,可以监视到USART1接收的数据。但要是给USART1送入数据的时候我一般用JLINK硬件仿真,加上电脑的串口助手发送。仿真中可以在USART1中设置断点查看数据是否发送成功(中断接收的时候)。  39、关于STM32 寄存器变量  问:STM32 寄存器变量 #define __IO volatile __IO uint32_t USART_Rx_Done = 0; USART_Rx_Done = 1;  怎样知道这个寄存器变量的地址,它是一个标志位 应该是有地址的 为什么在KEil中看不到  答:都在标准库里,你只能编译后,工程里包含的库文件才会出来,然后你选中寄存器变量,点右键,然后选择里面一个“涉及此参数”的选择。就可以找到地址了。  40、程序问题  问:SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE)
这句话是什么意思  答:当接收引脚有数据时,状态寄存器的USART_FLAG_RXNE就会为1,此时USART_GetFlagStatus(USART1, USART_FLAG_RXNE)的返回值就为1(SET),若无数据则为RESET,本语句一般用于while(SET == USART_GetFlagStatus(USART1, USART_FLAG_RXNE)),或if语句作为检测或判断条件  41、STM32重映射  问:为了使不同器件封装的外设I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这里的映射到其他脚上的意义是不是,假设GPIOA的PA1的复用功能是ADC1,那么是不是可以通过改变映射地址,将其映射到GPIOB的PB1上。  答:重映射的作用简单的说就是把管脚的外设功能映射到另一个管脚,但是不是可以随便映射的,具体对应关系参考手册上的管脚说明。比如USART2_TX默认在PA2管脚,当启用复用功能后就会将PD5管脚作为USART2_TX。另外也不是所有的管脚功能都能重映射,比如ADC1_IN0就只能在PA0。  42、STM32F417ZG批产烧程序  问:请问如何批量烧程序,源代码是不能给工人的,只能是编译好的二进制机器码。用的是正版的iar jlinkV8,找了几天没找到能够直接下载二进制的功能。uart串口方式烧写太麻烦了,而且产品不用串口。  答:可以,安装jlink的时候有一个J-Flash ARM的程序,这个可以直接烧写bin文件  深圳信盈达嵌入式、单片机、ARM、MIPS、FPGA、Android培训!  免费试听,满意后给您量身定制课程(包学会),快速提高您的技能!  教学特色:名师督学+工程师指导;项目案列解析+实际解决方案!  更多内容欢迎交流: qq:(谢老师)
楼主发言:2次 发图:0张
  更多内容欢迎交流: qq:(谢老师)
请遵守言论规则,不得违反国家法律法规

我要回帖

更多关于 stm32 iap例程 的文章

 

随机推荐