STM32G431的电机驱动代码的FOC中断触发相关问题。
fdcan通信内部回环正常,换成正常模式收不到数据
G474的opamp失效症状。有大佬遇到相同的症状吗
STM32G474RBT6使用Keil工程通过仿真器下载程序时,程序量超过64K时,就会下载失败,求教。
Motor Control Workbench六步算法显示硬件不支持电流检测,同一套硬件FOC算法就显示支持;硬件为B-G431B-ESC1
STM32G474VET6如何配置HRTIM的中心对齐模式
STM32G474RBT6芯片,hal库默认设置为双bank模式,怎样修改为单bnak模式?使用STM32CubeMX工具生成工程时,只能选双bank模式,不能选单bank模式!
STM32G474 HRTIM 推挽模式下 关闭死区 在比较寄存器较小的情况下,存在输出脉宽直接到100%
最近在做单极倍频SPWM
stm32G474RBT3的flash擦除寿命是多少?
微信公众号
手机版
给你说一个方法,你定义一个结构体,比如:
这个结构体每个故障定义一个。
每次故障被触发的时候就刷新当前发生故障的结构体,然后更新一下sys_fault_mgmt。比如当前的sys_fault_mgmt.next_trig_id不为零,就比较一下当前发生的故障要检查的时间点是否早于sys_fault_mgmt.next_check_point.如果更早就用这个故障的特征刷新。如果更晚就不用刷新。总之在故障产生、清除和确认的时候都刷新sys_fault_mgmt。而每次1ms中断的时候就只比较sys_fault_mgmt上面的事件。这个比较很简单不会耗费很多资源。
个人觉得当故障是这样的时候,裸机程序可以这样管理故障。当然如果你的系统有现成的链表。那么用链表的方法可能更好。就是说每次将最先需要检查的id放在链表的头部。依照事件顺序,插入新发生故障的链表可能会更好。
提供点参考思路。其实在早期MCU里TIMER也就1个或2个,
这么使用是常见的。
定时精度就设置为1ms. 如果说systick单独使用了,
单独拿个其它通用定时器无妨。设置多个不同的变量应对
不同的超时计时。
发生某事件需要设置超时值,开启超时计时,在定时中断里
检测超时值是否已到。
比方,为过流超时管理设置变量TIMEOUT_I,为过压设置超时管理变量
TIMEOUT_V等。使用共同中断对各个超时变量进行监测。
在中断里,如果超时变量本来就是0则不予理睬;如果是非0进行自减后若变0值
则视为超时值已到,得作相应处理。
G4有很多定时器和通道,根据超时范围可以通过设置比较值产生相对比较中断来确定ms级别的超时。
通过RTC的ALARM 来确定秒以上的超时。
另外选个通用定时器,仿造 systicK 再来一个1ms 计数也很方便。