硬汉嵌入式论坛

 找回密码
 立即注册
查看: 307|回复: 5
收起左侧

何种因素会影响擦FLASH时中断正常运行呢

[复制链接]

5

主题

7

回帖

22

积分

新手上路

积分
22
发表于 2024-3-6 09:44:44 | 显示全部楼层 |阅读模式
我的中断已经被我移动到RAM了,在擦FLASH时如果只有LED灯翻转,和我自己定义的钩子函数,中断是可以正常运行的,可
1、如果在中断中定义一个稍微大一点的数组中断在擦FALSH时无法正常运行,(我的LED没有正常翻转)

2、如果使用memcpy,拷贝的长度 int类型时 1~8、12、16均擦FLASH可正常运行,9、10、11、13、14、15,不行,  uint8类型 (1~7没测) 8~12行,13~18不行
3、如果我声明        uint64_t aa = 1;
                        uint64_t aa1 = 1;
       
                        aa = aa + (aa1+625)/1000000;   这种也会影响我擦FLASH时中断执行
这都是为什么呢?求大佬解答,求求了。
1184FF88-7A81-4d19-AA58-76F4A312B80A.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106760
QQ
发表于 2024-3-6 16:32:44 | 显示全部楼层
你这个代码里面调用了太多函数,这些函数本身不是在RAM里面执行的。
回复

使用道具 举报

5

主题

7

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2024-3-6 18:47:56 | 显示全部楼层
eric2013 发表于 2024-3-6 16:32
你这个代码里面调用了太多函数,这些函数本身不是在RAM里面执行的。

        timer_flag_clear(TIMER1,TIMER_FLAG_UP);
        Timer1Hook();
都被我移动到了RAM区了,其他的全是宏,只有memcpy没有移动,但memcpy有时行有时不行,给我搞昏了,还有就是为什么我定义数组也不行呢?
回复

使用道具 举报

5

主题

7

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2024-3-6 19:01:26 | 显示全部楼层
eric2013 发表于 2024-3-6 16:32
你这个代码里面调用了太多函数,这些函数本身不是在RAM里面执行的。

哦memcpy我大概知道了,当memcpy被认为是代码是好像就不行,当其被认为是指令时就可以
回复

使用道具 举报

3

主题

122

回帖

131

积分

初级会员

积分
131
发表于 2024-3-7 08:33:17 | 显示全部楼层
苦命人 发表于 2024-3-6 19:01
哦memcpy我大概知道了,当memcpy被认为是代码是好像就不行,当其被认为是指令时就可以

memcpy也要放在RAM里啊,你这个数组不长,直接while循环数据对拷就行
回复

使用道具 举报

5

主题

7

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2024-3-7 09:25:09 | 显示全部楼层
skyshine 发表于 2024-3-7 08:33
memcpy也要放在RAM里啊,你这个数组不长,直接while循环数据对拷就行

我知道memcpy也需要放在RAM,我放在RAM就全好了,但我好奇的是为啥不放在RAM时,有时可以,有时不可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-5 06:18 , Processed in 0.198306 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表