zoukankan      html  css  js  c++  java
  • 2015.8.3stm32f4串口调试记录

    由于最近要做一个IRIGB的转码模块,需要从GPS模块获取时间数据,处理器和GPS采用串口通信的方式。由于串口通信用得太多,就直接上手将串口的配置代码写完,然后试着用串口发送一个字符‘2‘,然后通过PC上的串口调试助手,可以看到我收到的是一个’向上的箭头‘。于是问题来了,对于我这个单片机玩了都不玩的人来说,这似乎有点弱智,可是我调了一下午也没发现什么端倪,因为,这个代码确实是比较简单。最后没有办法只有用百度去搜搜类似的问题,百度上答案无非都是在说是时钟配置问题,但是这一点我似乎不太相信。因为之前我也遇到过类似时钟配置的问题,但是后来我都改过来了,所以时钟配置应该是没什么问题的。我还用个LED测试了一下,让他每隔一秒闪烁一下,结果显示正常。之前时钟出问题是由于板载时钟是8MHz,但是在文件system_stm32f4xx.c中却将PLL_M设置成了25,改过来之后就好了。

    /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
    #define PLL_M      8
    #define PLL_N      336
    

    抱着对时钟配置正确的想法,我又折腾了很久,还是没有丝毫进展,于是又去仔细查看别人的回答,偶然看到一个人的回答,他说时钟配置除了以上位置要改之外,还有一处要设置,我按照他的方法设置之后,测试结果正确。这一处代码就在stm32f4xx.h中:

    #if !defined  (HSE_VALUE) 
      #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
    #endif /* HSE_VALUE */
    

      原来里面的是((uint32_t)25000000),这里由于板载时钟是8MHz,所以要将其改为8000000

      2016.5.30

    做网络通信,用串口配置WiFi时,发现串口出现乱码,调试许久无果。怀疑是时钟问题,经查找,发现除了上面两处跟时钟相关的地方之外还有一处就是在stm32f4xx.conf.h里面。有这样一段代码:

    #if defined (HSE_VALUE)
    /* Redefine the HSE value; it's equal to 8 MHz on the STM32F4-DISCOVERY Kit */
    #undef HSE_VALUE
    #define HSE_VALUE ((uint32_t)8000000)
    #endif /* HSE_VALUE */

    由于本次单片机用的时钟是10MHz的时钟,修改时只修改了上面头两处,然后在主函数里面用IO和延时输出脉冲发现,输出方波正常,但是串口乱码。然后发现在stm32f4xx.conf.h里面有这样一处,发现在这里将之前的HSE_VALUE(10MHz)已经#undef,然后重定义成了8MHz,所以造成串口时钟对不上。

  • 相关阅读:
    2.1.1 Speed Limit
    2.1.2 骑自行车的最短时间
    1.3.1提高实数精度的范例
    1.2.2一个数可以有多少种用连续素数之和表示
    求二倍关系的个数 1.2.1
    求平均值
    原生JS 购物车及购物页面的cookie使用
    基于Jquery的商城商品图片的放大镜效果(非组件)
    商城商品购买数量增减的完美JS效果
    弹性布局各种坑爹兼容
  • 原文地址:https://www.cnblogs.com/wan0807/p/4699711.html
Copyright © 2011-2022 走看看