Win+PL2303HX
这几天在stm32f407上跑RT-Thread操作系统,由于官方的BSP已经有移植好的例程了,所以自己配置起来还是很容易的。但是容易的事情做起来也出现了很多问题,下面就总结一下这几天的问题吧。
问题一:stm32f4官方库函数的时钟配置
——官方的例程默认的外部时钟是25M,而stm32f407-Discovery的外部时钟源是8M。所以要想在移植成功必须配置好时钟(好像不改配置,程序也想执行,只是频率不对。具体为什么能执行我也不清楚)。
1. 启动文件
在程序启动后,先执行的是SystemInit(系统初始化)函数,然才执行mian函数呢。
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,那怎么解决呢?于是我上网查了大量的资源,找了好的驱动,最后终于解决了。具体方法按照:http://tieba.baidu.com/p/2378715876
这里我贡献出自己的驱动http://yunpan.cn/QiCfNTewhDhpa 访问密码 b159
问题解决了,看看效果图,打印出RT-Thread的logo了!
问题虽然解决了,但是也暴露了好多问题,一些问题是自身的,还有一些是外界环境的。这个问题能很好的解决,主要得感谢@阿嘉^_^ 和Xi.ou是这两个网友帮我找出问题的原因,知道问题的原因,剩下的就好解决了!通过这件事又对“站在巨人的肩膀上”这句话有了更深的理解。寻找巨人过程是不容易的,但是总算找到了。
每次遇到问题收获不只是解决问题的方法,还收获了自己的“小伙伴”。