历史上的今天
今天是:2025年02月24日(星期一)
2020年02月24日 | cortex_m3_stm32嵌入式学习笔记(三):串口实验(串口通信)
2020-02-24 来源:eefocus
串口,可以理解为是用来和上位机(比如电脑)对话的,本节实验实现的是stm32接收上位机发送过来的信息,在原原本本的返回过去
stm32有5路串口,本节学习的是其中之一的USB串口(USART1)和学习IO口一样,首先要配置串口,由于原子已经配好了写在sys文件里,本渣就本着不造轮子的理念(其实是太难不懂orz),先跳过去了。。
所以本工程只需要一个main函数即可
#include "led.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
void init(void)
{
delay_init();
LED_Init();
NVIC_Configuration();//设置中断分组
uart_init(9600);//串口初始化,波特率9600
}
int main(void)
{
u8 i,len;
u16 times=0;
init();
while(1)
{
if(USART_RX_STA&0X8000)//接收到了数据
{
len=USART_RX_STA&0xfff
//printf("rn泥发送的消息为:rn");
for(i=0;i USART1->DR=USART_RX_BUF[i]; while((USART1->SR&0X40)==0);//等待发送结束 } printf("rnrn"); USART_RX_STA=0; } else//不接收数据时 { ++times; if(times%5000==0)printf("rnlovern"); if(times%30==0)LED0=!LED0; delay_ms(10); } } } 可能上面的代码有点看不懂,我们翻到usart.c 里面有这么一段代码 //串口1中断服务程序 //注意,读取USARTx->SR能避免莫名其妙的错误 u8 USART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节. //接收状态 //bit15, 接收完成标志 //bit14, 接收到0x0d //bit13~0, 接收到的有效字节数目 u16 USART_RX_STA=0; //接收状态标记 0x8000对应的2进制 100000000000000 0x3fff 对应的2进制 0011111111111111 这样就很明显了。。(感觉离底层越来越远了) 将程序烧进去之后打开串口调试助手 界面显示如下: 还会看到LED一直闪烁。。说明程序应该没问题 
史海拾趣
|
[求助]电气规则检查出错Output Pins And Power Pins…… #1 Error Output Pins And Power Pins On Net +10V Output Pins : mc1490.SCH(U2-1 @410,570) Power Pins : mc1490.SCH(U2-2 @410,560) #2 Error Output Pins And Power Pins On Net GND Output Pins ...… 查看全部问答> |
|
出错:i2cwrite error:1460 麻烦高手指点一二 12c init iic irq mapping :[irq:27->sysIRQ:21]. OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 52 OEMIoControl:Unspported Code 0x10100b4-device 0x0101 func 62 CamCLOCKOn=1 syncist:IO_Abandoned I2CWrite error :1460 ...… 查看全部问答> |
|
我现在的6713dsp是将256kiram分为两个部分 192k用于放code和data 64k用于l2cache 但是现在速度还是上不去, 老板要求1-2毫秒完成的任务,我现在用了18毫秒 不知道主频太低是不是主要原因啊? 现在做了也有一段时间了 时间始终还是在18毫秒左 ...… 查看全部问答> |
|
下面是我的程序及硬件电路,我想通过按最左上角的键让P1.6置低电平,让蜂鸣器响起来,我的思路是先检测是否有键按下,通过对比P0口的前后电平变化来实现,然后具体扫描时哪个键,但按键怎么都不起作用,用proteus仿真时发现按下开关,那个开关处电 ...… 查看全部问答> |
|
$(\'swf_r53\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMzQ3Nzg4MjEy/v.sw ...… 查看全部问答> |
|
以前就来过eeworld,期间陆续回来离开过几次,这次又注册新号回来。发现eeworld的版面基本还是老样子,看着真不习惯。版面显示很混乱,主次不分,总给人一种杂乱无序的感觉。虽然我肯定不是技术高手,但是对于一个没有考虑到人类视觉感官的论坛,真 ...… 查看全部问答> |
|
串口问题:芯片与串口调试助手的第一次发送时,芯片发送的第一个字符收不到 最近发现一个很奇怪的问题:芯片与串口调试助手的第一次发送时,芯片发送的第一个字符收不到,第二次就全能收到了。求解 如我发送一个“hallo,world!”第一次发送就变成了“allo,world”第二次再发送就正常了。但只要一按复位键,第一次又变成 ...… 查看全部问答> |
|
为了保证高频输入和输出。(这不是说电容能跳Hokey Cokey1。) 每个集成电路(IC)都必须使用电容将各电源引脚连接到器件上的地,原因有二:防止噪声影响其本身的性能,以及防止它传输噪声而影响其它电路的性能。 电力线就像天线一样,可能会拾取其它 ...… 查看全部问答> |




