今天用ST官方库重新尝试调试STM32的串口,遇到问题虽不多,但着实琢磨了我整个下午......刚开始的程序是只有管脚配置和串口模式配置,其他什么都没写.
但是一运行就出问题了.
首先程序赖在"0x08001990 BEAB BKPT 0xAB"这个语句里死活跳不出去.
把printf函数注释掉又能正常运行~~~
好吧,上网一搜,原来要在魔术棒->Traget选项里将UseMircoLIB选项勾选,也就是说printf函数要使用微库.
好吧,勾选了,再编译运行,,,,还是不成功啊~~~
以前自己用的是别人(正点原子)的代码,只要配置好串口,直接使用printf就OK了,现在使用库函数怎么就不行了.
然后就怀疑这里怀疑那里,忙活了一下午...
好吧,搜来官方代码,豁然开朗,,,
原来需要用一个fputc函数将printf函数重新定向到串口中,所有问题统统解决...
具体函数代码是摘自官方库的,现贴出来,,,对应的是串口1
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) ==RESET)
{
}
return ch;
} |