大意了,本来想今天看ADC和DMA的(至少看一个吧),结果。。。。
掉进printf的坑里了(经验主义害死人)。。。。。
库函数也没仔细能看完。。。。。
直接说结论:只写了fputc函数,没有处理微库相关的设置
链接:https://www.cnblogs.com/jasonchan1202/p/9673548.html
下面是吐槽。。。。。呜呜呜呜
老样子,使用STM32CubeMX配置USART1。之后就简单试了一下端口的收发
然后,我就掉进坑里了······
为了方便输出消息,会去重定向printf标准输出到串口输出。也就是,重写一个名为fputc的函数,大概是下面这样:
int fputc(int ch,FILE* f)
{
uint8_t temp[1]={ch};
{
//调用库函数,参数分别是:初始化串口的结构体,
// 发送数据用的字符/字符串,
// 发送的字节数,
// 最长等待时间
HAL_UART_Transmit(&huart1,temp,1,2);
}
return HAL_OK;
}
我在重写后,随手写了个测试输出“USART1 TEST”.
但是把程序烧进去之后却没有反应。开始怀疑的方向是两个:1、usart1的端口配置错误;2、重写fputc时某个参数调用异常。而这两个问题都在看了数遍代码之后就被排除了。
而调试呢,发现连main函数都进不去。欸,就是在启动文件卡着,欸,就是玩。。。
调试画面
可怜我一个两百多斤的老胖子,下班饭都没吃,还要被调试折磨。。。不讲武德。。。
最后,我妥协了。我真调查不出来了。
结果,只是一个设置就好了····
只需要设置一下微库!!!!微库!!!!
啊~~~我胃哭啊
参照着链接去设置了,果然好了
ps:核心内容是看的人家的博客,没一点自己理解的东西,我都不敢点哪个“原创”