单片机应用设计中提高系统可靠性的措施有哪些
发布网友
发布时间:2022-05-07 18:18
我来回答
共1个回答
热心网友
时间:2022-07-01 00:39
这个问题太笼统,这个需要具体问题具体分析。多的就不说,以我的经验和一般情况说下面几点。
1、中断问题。
中断函数要写得尽量短,而且要保证是顺序执行,一定不能在中断中有等待的语句,比如在中断函数中要等待某个标识位置位while(Flag == 0);之类的语句是不可取的,因为会在中断中执行的时间过长导致长时间不能进入别的中断,程序会跑飞现象。
2、敏感代码问题。
可能某些代码的地方,我们不希望执行某部分代码过程被中断给打断,那么我们会在执行该部分代码时禁止中断,执行完毕后再开启中断。那么必须要保证该部分代码执行的时间要尽可能的短,保证短到什么程度由CPU特性决定。
3、阻塞问题。
如果应用比较大,要实现的功能和执行的任务很多,那么程序中尽量避免使用等待阻塞之类的语句,如while()判断标识位的语句,最好是用if()语句判断,如果if()条件不成立会接着往后执行,看有没有别的事情做,如果没有则再返回接着进行if判断。
4、中断优先级问题。
有些CPU支持中断嵌套,而有些CPU不支持中断嵌套,不管CPU支不支持中断嵌套,要合理安排中断优先级关系,比如51单片机中使用定时器中断刷新LED(或LCD)显示,同时串口中断接收数据,默认状态下定时器比串口中断优先级更高,那么最好把串口中断优先级设置得比定时器更高更保险一些,相比之下漏掉一个串口数据比少刷新一次LED(或LCD)后果更严重。
5、代码框架结构问题。
其实这才是最核心的问题,如果你的CPU要实现很庞大的功能,如CPU要完成串口收发、I2C数据存储、LCD显示、Flash读写、USB接口通讯、按键识别、IO口电平监测等等等等的功能,那么自己直接裸机写程序那是不太现实的,必须要选择移植一个成熟的代码架构或操作系统,如选择状态机代码架构,操作系统如uCos、eCos、RT-thread等等。这种方法对CPU的处理速度、Flash空间、RAM空间的需求是挺高的,如果是51、52之类的单片机那就不要考虑算了。51、52之类的单片机那就根据自己的需要自己设计一个简单的代码架构即可。