Rt-Thread下的串口问题

Win+PL2303HX

         这几天在stm32f407上跑RT-Thread操作系统,由于官方的BSP已经有移植好的例程了,所以自己配置起来还是很容易的。但是容易的事情做起来也出现了很多问题,下面就总结一下这几天的问题吧。

         问题一:stm32f4官方库函数的时钟配置

——官方的例程默认的外部时钟是25M,而stm32f407-Discovery的外部时钟源是8M。所以要想在移植成功必须配置好时钟(好像不改配置,程序也想执行,只是频率不对。具体为什么能执行我也不清楚)。

1.  启动文件

Rt-Thread下的串口问题_第1张图片

在程序启动后,先执行的是SystemInit(系统初始化)函数,然才执行mian函数呢。

2.  SystemInit函数

SystemInit函数在system_stm32f4xx.c中,这里面提供了一个宏,这几宏就是配置时钟的,如图:

 Rt-Thread下的串口问题_第2张图片

而晶振频率在stm32f4xx.h中设置

Rt-Thread下的串口问题_第3张图片

     默认是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的。

Rt-Thread下的串口问题_第4张图片

但是现在我里只有PL-2303HX,那怎么解决呢?于是我上网查了大量的资源,找了好的驱动,最后终于解决了。具体方法按照:http://tieba.baidu.com/p/2378715876

这里我贡献出自己的驱动http://yunpan.cn/QiCfNTewhDhpa  访问密码 b159

问题解决了,看看效果图,打印出RT-Thread的logo了!

Rt-Thread下的串口问题_第5张图片

问题虽然解决了,但是也暴露了好多问题,一些问题是自身的,还有一些是外界环境的。这个问题能很好的解决,主要得感谢@阿嘉^_^ 和Xi.ou是这两个网友帮我找出问题的原因,知道问题的原因,剩下的就好解决了!通过这件事又对“站在巨人的肩膀上”这句话有了更深的理解。寻找巨人过程是不容易的,但是总算找到了。

每次遇到问题收获不只是解决问题的方法,还收获了自己的“小伙伴”。

你可能感兴趣的:(橙子读书,橙子软件)