在main.c 中使用这个函数正常,移植的lorawan 的RTC回调函数里会调用AES128加密,跟踪后发现,中断回调执行uint8_t LL_Encrypt( uint8_t *key, uint8_t *plaintextData, uint8_t *encryptData ); 函数后死机。
请问有什么办法可以解决?
RTC使用可以参考:
CH573RTC - SweetTea_lllpc - 博客园 (cnblogs.com)
AES128加密参考:
求助:CH571单独使用硬件AES模块的初始化问题。 - 沁恒微电子社区 (wch.cn)
接口函数都有,无需移植其他的代码。
@TECH_Lpc 我的问题不是RTC的使用或者AES128的使用。
我的问题是在中断里调用 AES128 加密解密会死机。。。
初始化函数不要放在中断服务函数里面调用,直接初始化的时候调用就可以了。
同时这是库函数,协议栈已有,调用使用即可。
@TECH_Lpc 我的问题是 我需要在 中断中调用 uint8_t LL_Encrypt( uint8_t *key, uint8_t *plaintextData, uint8_t *encryptData ); 这个函数。
你的回答是让我不要在中断中用。。。
问题是我必须要再中断中用啊。。。。
用类似OS的模式,中断里放Pending标记,在主循环里处理。中断里尽量少放操作,尤其是耗时的。
1、中断中可以置标志处理事件,函数内容不建议放在中断中处理,因为中断要求快进快出,放一个库函数在中断中,我们也无法确定执行时间和异常情况;
2、通过tmos任务或者while循环,查看中断的标志是否置位,如果置位成功,将执行tmos/while中的AES代码;