umbrella12 发表于 2018-11-4 23:48:55

F746中,systick中断能打断硬件FMC操作nandflash

用了微雪电子的F746开发板,发现systick中断,能打断fmc操作nandflash的时序,导致读出来的数据不对,这正常嘛?
感觉F746好难用啊

toofree 发表于 2018-11-5 00:52:44

关键你在systick中断服务程序中都干啥了?
systick建议做成1ms级或100us级,不要比100us在小了。如果只是个中断,中断进去能马上出来的话,应该不会影响fmc操作。

stm1024 发表于 2018-11-5 08:16:48

Systick作为ARM内核外设,其优先级相比一般的外设是要高一些的。不过在内核中的优先级相对要低一点,而且是可配置的Rest,NMI、HardFault、以及SVC、PendSV过了才是Systick。
不过,建议在中断中尽可能少的做事情,因为打断主程序之后,MCU是知道了, 但是与MCU相关的外设并不一定能够知道,就算知道,由于时序的问题,也不一定会等,容易造成数据丢失或者紊乱,你看到的很多示例中在中断中处理事务,包括我有时候也会这么写,其实这都不是很好的实践方法。

umbrella12 发表于 2018-11-5 14:07:10

toofree 发表于 2018-11-5 00:52
关键你在systick中断服务程序中都干啥了?
systick建议做成1ms级或100us级,不要比100us在小了。如果只是个 ...

就是例程的默认配置,1ms进一次中断。
啥也没干,就默认每进中断一次,那全局变量+1。
但是就是会干涉FMC操作NANDFLASH,连续读多个页,就会有部分页的数据读出来不对。
关掉systick中断,就没问题了,所有页的数据读出来都对。。

umbrella12 发表于 2018-11-5 14:18:24

stm1024 发表于 2018-11-5 08:16
Systick作为ARM内核外设,其优先级相比一般的外设是要高一些的。不过在内核中的优先级相对要低一点,而且是 ...

恩,但是我在中断中也没干啥。
1ms一次的中断。
我记得之前操作lpc1788的FMC控制nandflash是没问题的,不怕RTC、TIM的中断打断的。
但是到了这个F746,居然发现1ms一次的systick中断能扰乱FMC操作nandflash
页: [1]
查看完整版本: F746中,systick中断能打断硬件FMC操作nandflash