前言
最近也是摸索着用CCS5.4以及SYSBIOS6来做程序。现将做的串口维护程序的考量做一次小结。
使用基于28335的SCI来做串口维护的程序CUI,使用了C++。为了将来程序可以重用。将硬件操作的接口和CUI程序尽量松耦合。抽象出设备接口层,负责寄存器操作之类的硬件封装;抽象出数据缓冲队列,作为硬件收发中断的缓冲;抽象出CUI应用,直接对缓冲区操作,与用户进行交互。
创建了一个Task,对接收缓冲区进行轮询,当有用户输入时,对输入进行回显,以及交给CUI程序来交互。并将返回的数据写入到缓冲区,并触发发送ff中断。创建SCI-A发送FIFO中断处理的HWI,如果发送缓冲区中有数据,则写入到发送FIFO,如果没有了数据,则关停发送FIFO中断。创建SCI-A接收FIFO中断处理的HWI,如果收到了数据,则缓存到接收缓存中。
CUI程序
cui程序被放到了Task中定时轮询。使用了一个死循环来控制流程,单次执行后应该使用Task_sleep来空出CPU。需要注意的是,Task_sleep是tick的次数,而Tick是有Clock模块来产生的,需要配置好晶振频率已经倍频等参数。
对用户的输入应该做成带缓存的行输入方式。也就是,用户的键盘输入应该是在回车后才提交给cui程序处理的。在没有回车前,用户可以敲击所有可能的键,并且可以使用退格键来删除,而且串口应该能回显用户的当前键盘操作。
CUI采用多级字符菜单来交互。包括监视系统运行状态,实时数据显示,以及参数设置和系统控制。
缓冲区程序
设备接口程序