论坛» DIY与开源设计» 电子DIY

助工
2012-05-07 16:19 141楼
好吧,从基础做起,努力学吧
助工
2012-05-10 08:33 142楼
串口收发数据成功,但存在部分乱码,整理中。。。。之后上图,上视频,尚待改进

最新版串口调试助手下载 UartAssist.rar
助工
2012-05-12 18:37 143楼
【前言】 之前串口乱码的问题成功解决,串口收发数据正常。在网上查过许多关于串口乱码的原因,结果我遇到的问题有点出乎意料,迟迟没有解决。今天晚上抽出时间好好整理总结一下吧!有错误的地方还请大家指正!

【问题提出】串口通信出现乱码

【原因分析】
1.波特率或者RCC时钟没设置对(最常见)
2.USART配置有问题(本次遇到的)
3.串口调试软件或电脑端串口有问题
4.MAX232芯片坏掉或虚焊

【解决方法】
1.程序和调试助手的波特率设置相同,如都是9600,;RCC时钟貌似可以不配置,配置的话有现成代码,仔细研究一下,添上注释就行。

2.USART的配置出现错误的地方很多,只谈本次遇到的。
之前以为串口下载程序时要使用Even选项,所以错把USART也设置成Even,如下:
USART_InitStructure.USART_Parity = USART_Parity_Even;
应该为:
USART_InitStructure.USART_Parity = USART_Parity_No;
//无奇偶校验

3.换几个最新的串口调试助手试试,换个USB口(针对笔记本用户,使用USB转串口线),在设备管理器中查看COM口状态。

4.最好买进口MAX232芯片,质量可靠,国产水货不经用,不要图便宜;虚焊的话,用烙铁补焊一边就行,这个可能性比较小




以上是解决串口可以联机但数据乱码的问题,原因可能不止上述,要具体问题具体分析,最好能有明白的人给你指点一下。在此感谢hanshuyujifen2指正!
助工
2012-05-12 19:36 144楼
之前由于小小的问题纠结了好长时间,现在终于解决了,实现了又一功能——串口收发数据

先上几张图:







程序实现的功能:电脑端通过串口发数据给STM32,STM32接收完数据后,再发送给电脑端,通过串口调试助手观察,实现了STM32接收和发送数据的功能。另外,程序可采用两种方式工作,查询和中断方式。
助工
2012-05-12 19:43 145楼
很好的帖子,看的我心痒痒了,如果不是当前手头的项目急,分不开心,真想参加!真心为没有早点发现这么好的活动感到可惜,当初是有时间没有概念,现在是有概念没有时间啊。。
助工
2012-05-12 19:49 146楼

主程序:main.c
#include
#include
#include"USART.h"

extern int Flag; // 是否使用中断方式

int main()
{
u8 temp;

RCC_Configuration(); //RCC时钟初始化
GPIO_Configuration(); //GPIO初始化
USART_Configuration(); //USART初始化

if(Flag)
NVIC_Configuration(); //中断初始化

while(1)
{
GPIO_ResetBits(GPIO_LED, DS1_PIN); //控制LED亮灭,指示工作正常
Delay(0x3FFFFF);
GPIO_SetBits(GPIO_LED, DS1_PIN);
Delay(0x3FFFFF);
if(!Flag)
{
while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); //等待接收完毕
temp = USART_ReceiveData(USART1); //接受一个字节
Uart1_PutChar(temp); // 把接收到的字符发送出去
}
}
return (0);

}

回复一下,希望多多支持!
USART.c
——回复可见内容——

助工
2012-05-12 19:50 147楼
呵呵,你可以参加新一轮的FPGA DIY活动啊,到时候还是会有很多人帮助你的,只要你肯用心,肯花时间。
院士
2012-05-12 20:02 148楼
调 出来就好 就好
助工
2012-05-13 15:10 149楼
之前都是在用软件延时,还没用过定时器延时呢,该看看定时器了。
工程师
2012-05-13 20:31 150楼
挺好啊
共166条 15/17 |‹ 12 13 14 15 16 17 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]