• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

求助!STM32的串口通信

灵澈 2017-02-27 浏览量:704
收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 导致串口通信失败的原因很多。

    串口号是不是写串了?波特率一致了吗?HSI_VALUE 是不是跟实际的晶振不一样?

    数据解析上,缓冲字符数组的长度够了吗?数据读取方式跟协议里给的方法一致吗?

    等等

    另外,串口线是不是太长了?

    • 发布于 2017-02-27
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:10
  • 什么问题?至少这个得说一下吧。
    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 去找到这个芯片串口通信的官方例程,然后把演示里面的字符串改成你需要的,就行了
    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 看到程序代码了,看看另一个设置的波特率,字节校验,停止位等等一样吗?


    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 附链接地址

    求助!STM32的串口通信

    //www.icxbk.com/community/forum.php?mod=viewthread&tid=73071
    (出处: ICKEY BBS)

    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 灵澈他的问题是啥啊,手机看不到啊
    • 发布于2017-02-27
    • 举报
    • 评论 1
    • 0
    • 0
灵澈 回复了 heaton426 :等下我在编辑一下 回复

  • 检查 串口时钟  示波器测试下硬件 程序里面就是要注意下晶振倍频系数
    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 不知道您的函數USART_SendData實體是怎樣,另外Buffer不可只有一字元,按下Enter的新行/換行也算控制字元(char)

    1. 您應該要有一個選定長度的Buffer負責接收到的資料,然後等接收完畢後才能轉送回去

    2. 因此應該增加如下


    u8 UART_RX_BUF[UART_REC_LEN];     //接收缓冲,最大UART_REC_LEN个字节.

    3. 在IRQ中讀取並儲存所有輸入的字元,並判斷結尾的換行/新行字元

    4. 然後在main中最後的迴圈While(1)輸出字元


    	while((UART1->CSR&UART_IT_TXIEN)==0);//等待发送结束
    	    UART1->TDR=UART_RX_BUF[t];  
    這寫法好像都很制式化了,您可以參考到一堆範例

    以上供參考

    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 其他函数都有,uart_send的函数原型呢?少东西肯定不行啊
    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 从程序 上看,你打开了发送与接收的中断。 发送是不是一直在中断状态下,所以其他的函数无法运行呢,你发送先不要使用中断试试。

    其他可能问题。

    一、硬件上

    1、接线是不是正确RX、TX


    二、软件上

    1、IO口初始化是不是正确。

    2、时钟配置是不是对。

    3、波特率是不是匹配



    • 发布于2017-02-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

求助!STM32的串口通信