看了论坛里关于串口乱码的讨论,归根到底是关于数据传输位LSB 与MSB的区别,自己也使用程序验证了一下,感觉这主要跟串口软件设置有关系。废话不说了,主要说一说如何使用cod generator(以下简称cg)生成AD和uart代码应用。该应用主要作用是ADC对AIN0的电压进行测量,并将测量值通过串口发送到上位机显示。功能很简单,但是对于这个
一 使用cg生成相关的代码,主要需要
1)配置的是AD的位数,采样时间,操作模式。
2)配置UART的参数,主要是波特率,停止位。校验位等等,最重要是确认的输出位传输次序,即选择LSB 还是MSB.
二 生成代码,配置用户应用。
主要流程如下:
1)程序一开始初始化ADC及SAU等模块, 这些已经由cg自动产生并应用了,我们不用关心。
2)添加用户代码。本例应用主要是开始启动ADC,获得数据后产生中断,在ADC中断里设置标志位,主程序里判断标志位,停止ADC,获得并处理电压数据,之后通过UART发送,其中UART的应用比较特殊,里面有回调函数,在配置里可以看出来,一旦发送完毕会自动调用回调函数,因此我们需要在该回调函数里加入启动ADC的函数,来再次启动ADC。
3)对于获得电压值只是简单的取每一位,然后转化成字符发送出去。
4)如下,是串口软件读取的值,显示4为,电阻逆时针到头是电压最大值,显示1023,顺时针到最小值,显示0001,其他中间值也会显示,具体如下:
三 总结。
1)对于这个10引脚的MCU,内部空间资源有限,我遇到的问题是float运算,一旦出现小数,比如5.0.编译就会出现错误。
2)还是上面问题,常量如果定义过多,也会出现编译错误。百度了一下,需要修改ldr文件,具体怎么修改,还需要研究。
总之就是内部空间太小,导致一些深入的运算无法进行。
附件是该程序文件,有需要可以参考一下!!