
一.问题+ U! T5 J2 s3 p) l- d/ ] K( [+ p) E7 e* L& z+ W. C 近来项目需要用低成本STM32F042G6开发。遇到下面问题:- R( t& h8 v! ?4 W0 z4 t/ E 1.J-FLASH下载找不到stm32f0芯片。 # q9 }* v' ]$ y0 S2 n) l0 x( g8 J 2.做IAP升级程序,需要重新设定中断偏移量,但F0和F1及F4的中断偏移量设置相当不同。 3.IAP程序的移植及注意事项。8 ?% K/ J9 R9 ^5 H* X) ? & n+ k4 m2 o, w4 f& s E( P 二.解决 : B1 ]- o0 R! }0 `7 m 1.J-FLASH找不到F0芯片,很好解决,重新下载安装一个J-flash即可。4 M$ d. J* U- K4 k" J 5 S$ Z( S$ P1 @& @1 `, m4 X* o' b% M 2.STM32F0中断偏移量的设置1 Z8 a3 E7 A- Y& ]) Z" C. n , I" Q/ F4 I4 A9 i8 Z 你需要这样搞: : `6 s3 a6 o1 U) S5 S (1)main函数开头部分加入这两行代码: : ^, g: d# B+ m, V# {/ Q3 ^3 |, R' A ![]() 0x20000000不需要更改; 0x8003000是APP程序的偏移地址;9 F) g1 {9 w I" g9 i 0 B0 P- M( U5 X' E- } 0xC0是这样计算出的:打开startup_stm32f042.s文件,从_Vectors往下数,总共48个中断向量入口; / ~* n$ _& Y6 o/ w) L ![]() 3 _" \1 ?/ [: ~. j; ~, } 48 *4 = 192 = 0xC0;7 Y$ F- x# v5 ~; r8 D* R# i% B+ ` (2)然后MDK魔术棒这样设置: $ i2 u J- H3 I$ R; r# V4 f9 t ![]() Start中设置0x200000C0就是0x2000000+0xC0; Size中这样设置,就是0x1800(6Kbytes的Sram)-0xC0 = 0x1740; ' r: J! U8 [, x* A$ h* I: \ 好了,对于STM32F0的中断偏移就设置好了。/ b+ D8 o3 U4 j( J# y ) w1 _; p, T# p; g$ n - E$ ^! B- f L o! m 3.IAP程序的移植及注意事项- `+ G% T Z+ J6 _ + [, n7 S2 n' H* Y9 T 移植过程中,发现进入升级程序中,开始擦除Flash的对应页时,直接擦除了IAP程序的本身;9 G) z0 }9 @/ e% d! T' v5 T. b8 F# Y 通过已通查找,发现这里要修改为对应芯片Flash的对应值:* o% A4 {& u! t+ m ' V1 n! w2 y \/ n% g3 O7 o# T' Z ![]() ' Y% m8 j' z6 Z+ @! a, @ 否则会因为Flash不匹配而误擦除;8 i- P9 r1 u8 ?! e0 ?3 p 议,转载请附上原文出处链接及本声明。6 Z: `9 P6 o9 P3 C. z # @7 S: v7 }5 v - R7 t5 o0 D0 _: ~' d* J |