2. SystemInit函数
SystemInit函数在system_stm32f4xx.c中,这里面提供了一个宏,这几宏就是配置时钟的,如图:
而晶振频率在stm32f4xx.h中设置
默认是25000000,由于我们用的是8M的时钟,故重新定义这个宏
#define HSE_VALUE ((uint32_t)8000000)
而在stm32f4xx_conf.h中也有涉及到时钟的宏,所以我们也应该看一下是不是正确
总结:原则就是软件和硬件的时钟想匹配
问题二:串口通信
以前自己就是瞎用,没有出现过什么问题,只知道就是这么个连接方式,也没想太多。但是这几天却出现了问题,问题的原因太多了,所以就不一一列举了。
1. 直接将stm32f407的Usart的Rx、Tx跟电脑的Rx、Tx连在一起
为什么会出现这样的问题呢?我自己也请教了几个人也上查了查。
RS232是一种接口,就是通常所说的串口,RS接口上通信要12V的电压才能识别,也就是相对高低电平为12V和0V。单片机的高低电平为3.3V和0V。两者电平不一样故无法通信,中间就必须加一个电平转换芯片,也就是驱动。MAX232就充当这个驱动。
USB串口是指一种能把USB信号转换成串口信号的设备。PL2303是一个芯片,这个芯片就是把USB信号转换成串口信号,这个芯片的输入数据电平是可以选择的3.3V或者5V,所以用这个芯片充当USB跟串口的桥梁。
在这里我选用了PL2303充当了这个桥梁。
2. 软件驱动的
硬件弄好了,只需在电脑上安装驱动就可以使用了,但是现在win8是不支持PL2303HX的。
但是现在我里只有PL-2303HX,那怎么解决呢?于是我上网查了大量的资源,找了好的驱动,最后终于解决了。
问题解决了,看看效果图,打印出RT-Thread的**了!
问题虽然解决了,但是也暴露了好多问题,一些问题是自身的,还有一些是外界环境的。这个问题能很好的解决,主要得感谢@阿嘉^_^ 和Xi.ou是这两个网友帮我找出问题的原因,知道问题的原因,剩下的就好解决了!通过这件事又对“站在巨人的肩膀上”这句话有了更深的理解。寻找巨人过程是不容易的,但是总算找到了。
|