在⽤MDK调试STM32板⼦串⼝时,为了⽅便串⼝调试,调⽤了printf()函数,⽤Keil仿真是,串⼝不能正确的输出,软件仿真时,总是卡在那 ⾥。有点纳闷,然后调⽤USART_SendData()函数,发现串⼝可以接收到正确的数据,证明串⼝配置没有问题,问题应该是出在
printf()函 数上,参照ST公司的printf例⼦也不能在串⼝输出数据。由此可知应该是软件配置的原因。后⾯,百度,再AVR论坛上找到了答案。
如果使⽤的是MDK,请在⼯程属性的“Target“-》”Code Generation“中勾选”Use MicroLIB“
进⾏如上设置后编译⼀下,串⼝输出正确的数据。
#ifndef __UART_INTERFACE_H#define __UART_INTEFFACE_H#include \"stm32f10x_lib.h\"#include \"stdio.h\"
void UART_Init(unsigned long UART_baud); //波特率,如115200int fputc(int ch, FILE *f); //fputc重定向int fgetc(FILE *f); //fgetc重定向
#endif
下⾯是.C的部分内容,省去了初始化的部分,⾃⼰看着写好了int fputc(int ch, FILE *f){
USART_SendData(USART1, (u8) ch);
while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET)) { } return ch;}
int fgetc(FILE *f){
while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET)) { }
return (USART_ReceiveData(USART1));}注释:
fgetc 和 fgetc是c语⾔的标准函数(形参是标准的) FILE *f 是⽂件指针,具备⽂件系统的操作系统有⽤。对于简单的⽆⽂件系统的嵌⼊式系统⽆⽤。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务