前序:本人用到的是STM32F103RBT6,在设计基于此MCU的产品时用到了其中的串口USART来与外部进行通信,按照常规进行相关常规的串口初始化设置和配置之后,想要把AD采集到的数据通过串口发送出去,用到的串口发送数据的函数是printf("\r\n The current AD value = 0x%04X \r\n", ADC_ConvertedValueLocal);, 问题:因为要发送的ADC_ConvertedValueLocal变量中的数据需要经过很多的运算和处理,比较费时间,因为比较耗时,当要求串口以一定的时间发送采集到的数据的时候发现发送几个数据之后就死机了,开始不知道什么原因,后经查找就是当以固定的时间调用printf()函数发送数据后,采集到的AD数据还要经过费时的运算处理,当运算处理的时间超过了调用printf()函数的时间,就出现死机,串口无法传送数据,或者是串口发送几个数据之后就停止不传了。由于调用printf()函数的时间已经固定好不能更改为其它的时间,采集的AD数据的运算处理时间也是已经设计好,不能再更好,貌似陷入了无法解决的境地。 解决:后在一步一步仿真进入printf()函数,printf()函数在执行串口的数据发送时其函数内部封装调用了函数int fputc(int ch, FILE *f),,实际是调用此函数进行发送数据的,考虑调用函数比较浪费时间,就直接把要收发的数据绕开printf()函数直接调用int fputc(int ch, FILE *f)函数,节省时间开支浪费。然后又改进了AD采集数据的运算处理尽量减少时间,问题解决了。哈哈,实际在调试中发现printf()函数确实是比较费点时间,大家在开发的过程中有没有发现这个问题。 |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
RE:【MCU实战经验】+基于STM32F103控制电路板设计
RE:【MCU实战经验】+基于STM32F103控制电路板设计
RE:【MCU实战经验】+基于STM32F103控制电路板设计
RE:【MCU实战经验】+基于STM32F103控制电路板设计
RE:【MCU实战经验】+基于STM32F103的串口收发数据速率慢
RE:【MCU实战经验】+基于STM32F103的串口收发数据速率慢
RE:【MCU实战经验】+基于STM32F103的串口收发数据速率慢