HC32F460的Flash功能很有意思 , 提供两种编辑模式:单步编辑 , 连续编辑 。 其中单步编辑 , 没什么特殊要求 , 可以直接使用;而连续编辑就需要在RAM中操作了 。
文章插图
需要这些哦
联想E460
Win10专业版
Keil5V5.14
HC32F460开辟板
方式/
1在工程中写好flash编程代码 , 硬件仿真全速调试后 , 发现存储区乱码 , 汇编指针跑飞 。
文章插图
文章插图
文章插图
2查阅资料后知道利用持续编纂函数"EFM_SequenceProgram"时 , 需要占用flash总线 , 从而不克不及读取flash里的指令 。
文章插图
3仿真单步运行后 , 发现运行指针从"EFM_SequenceProgram"函数中的"EFM_ClearFlag"处起头跑飞 。
文章插图
4【HC32F460的Flash连续编辑功能用法】因为运行跑飞 , 而不是代码优化导致的问题 。 在请求了手艺撑持后得出 , “EFM_SequenceProgram”不克不及在flash中运行 。 那么只能在RAM中运行了 。
下图为map中函数地址 , 都在flash上 。
文章插图
5解决方式有两个:
1、将代码全数放在ram上运行;
2、将与“EFM_SequenceProgram”相关的函数放到RAM中运行
小我选择第2个方案
61、需要在RAM上申请一个区域作为函数运行区
在“工程\Objects”下点窜.sct文件
在“RW_IRAM1”中申请区域“*.o(RAMCODE)”
文章插图
72、工程中利用前点窜设置装备摆设“魔法棒-Linker” , 打消“Use Memory Layout form Target Dialog” , “Scatter File”中选择点窜的.sct文件
文章插图
8在需要挪用的函数前利用“__attribute__((section("RAMCODE")))” , 并将其内部其他挪用函数前均添加“__attribute__((section("RAMCODE")))” 。
文章插图
文章插图
9查看.map , 可以看到函数地址都位于ram区域了
文章插图
9
10仿真全速运行调试后 , 发现系统运行正常 。
文章插图
注重事项HC32F460操作flash的最小单元是32位数据 , 故内部封装也都要转化为32位数据 。
以上内容就是HC32F460的Flash连续编辑功能用法的内容啦 , 希望对你有所帮助哦!
推荐阅读
- 利用橙子皮手工DIY制作漂亮花朵的方法
- 收集5万个塑料瓶 DIY梦想中的小船!
- 三种玻璃瓶废物利用DIY的小创意
- 坏掉的烧水壶废物利用DIY制作花盆的方法
- 7000多个塑料瓶盖DIY逼真的肖像画
- 刀豆做法大全 妈妈的味道
- 超市冷冻牛排怎么煎 教你煎出色香味俱全的牛排
- 粳米粥的做法 妈妈再也不用担心我不吃早餐了
- 塑料瓶废物利用手工DIY好用的手机充电架
- 妈妈的旧T恤 DIY改造成漂亮女儿睡裙的方法