OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 12311|回复: 18

串口控制LED灯

[复制链接]

21

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2016-8-23
在线时间
71 小时
发表于 2016-9-17 20:34:52 | 显示全部楼层 |阅读模式
以前叫别人写了个串口控制程序,被坑了,现在理解了串口通信过程,感觉不值那个价钱,为了让才入门的朋友少走弯路,自己简单改了个串口控制LED灯亮灭的程序,希望给入门朋友参考。

#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
int main(void)
{
u8 t; u8 len;
u16 times=0;
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
LED_Init();

while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
printf("\r\n您发送的信息为:\r\n");
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];

while((USART1->SR&0X40)==0);
}
printf("\r\n\r\n");
USART_RX_STA=0;
}
-----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
if(!(strcmp(USART_RX_BUF,"LED1亮"))) //strcmp  C语言关键字
{
LED1=0;
memset(USART_RX_BUF,0,strlen(USART_RX_BUF));  //  memset,strlen C语言关键字                        
}

else if(!(strcmp(USART_RX_BUF,"LED1灭")))
{
LED1=1;
memset(USART_RX_BUF,0,strlen(USART_RX_BUF));
}
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
else
{
times++;
if(times%200==0)printf("请输入数据,以回车键结束\r\n");
delay_ms(10);
}
if(times%20==0)
{
LED0=!LED0;
}
}
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2016-4-3
在线时间
37 小时
发表于 2018-10-2 18:17:18 | 显示全部楼层
说实话50快真的不亏,别人吃这个饭的 ,对串口的透彻理解 硬件的熟练掌握,能写出高效稳定健壮的程序,你以为调用HAL的库函数 LED1=0/1 能控制led亮灭,没错但是但是你考虑过没有串口初始化时候在什么场景用什么波特率最好,怎么保证串口数据完整性,如果传输过程中其中一位数据丢失要怎么处理,如果程序跑飞怎么拉回来, 你看例程那么简单也只是建立在所有系统软硬件都没问题的基础上才会这么简单,我们公司同样都是软件工程师,写同样功能的程序为什么被称为高级构架师写的可以在系统上跑几个月都不会出问题,来公司一两年的程序员写的也能用但是三天不重启服务器就崩溃了,这就是对于硬件和平台理解的深度不一样。你一个新手对于串口的理解,芯片的理解能值50快?
回复 支持 1 反对 0

使用道具 举报

44

主题

298

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
209
金钱
209
注册时间
2016-9-9
在线时间
84 小时
发表于 2016-9-18 08:48:22 | 显示全部楼层
感谢分享。
回复 支持 反对

使用道具 举报

9

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2013-7-16
在线时间
80 小时
发表于 2016-9-18 09:15:03 | 显示全部楼层
楼主给了多少钱叫人家写的?
回复 支持 反对

使用道具 举报

21

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2016-8-23
在线时间
71 小时
 楼主| 发表于 2016-9-18 17:37:02 | 显示全部楼层
cookles 发表于 2016-9-18 09:15
楼主给了多少钱叫人家写的?

50.............
回复 支持 反对

使用道具 举报

9

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2013-7-16
在线时间
80 小时
发表于 2016-9-18 23:08:32 | 显示全部楼层

也不算多吧。 你学好了就可以赚无数个50块。。。
回复 支持 反对

使用道具 举报

21

主题

70

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
364
金钱
364
注册时间
2016-8-23
在线时间
71 小时
 楼主| 发表于 2016-9-19 09:58:09 | 显示全部楼层
cookles 发表于 2016-9-18 23:08
也不算多吧。 你学好了就可以赚无数个50块。。。

关键这不难,以前自己太游手好闲
回复 支持 反对

使用道具 举报

9

主题

108

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1136
金钱
1136
注册时间
2013-7-16
在线时间
80 小时
发表于 2016-9-19 10:05:27 | 显示全部楼层
勿忘初心 发表于 2016-9-19 09:58
关键这不难,以前自己太游手好闲

算是交点学费吧!  对于不会的人来说,就是难啊。
回复 支持 反对

使用道具 举报

3

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-6-22
在线时间
56 小时
发表于 2016-9-22 09:39:04 | 显示全部楼层
楼主 。我对照你的程序写出来是可以用 ,但有问题 就是我的这句 “”printf("请输入数据,以回车键结束\r\n");“”注释掉 LED0闪烁会变慢 ,没注释的时候就很快,你的会不会有这种现象
回复 支持 反对

使用道具 举报

4

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2017-3-6
在线时间
20 小时
发表于 2017-3-18 19:56:34 | 显示全部楼层
如果出入的不是LED灭或LED亮 程序就崩溃了 为什么啊 我不管之后输入LED亮  或LED灭都没反应
回复 支持 反对

使用道具 举报

1

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1183
金钱
1183
注册时间
2015-5-28
在线时间
149 小时
发表于 2017-3-23 16:04:17 | 显示全部楼层
我不要钱,点个外卖就给你写~
回复 支持 反对

使用道具 举报

4

主题

74

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2017-4-5
在线时间
24 小时
发表于 2017-4-5 15:51:49 | 显示全部楼层
厉害了
回复 支持 反对

使用道具 举报

jabin 该用户已被删除
发表于 2017-4-15 23:19:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

8

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-10-26
在线时间
13 小时
发表于 2017-11-6 19:32:57 | 显示全部楼层
哪位 大哥               有库函数  版本的
回复 支持 反对

使用道具 举报

4

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
254
金钱
254
注册时间
2018-9-23
在线时间
67 小时
发表于 2018-10-1 10:07:34 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
110
金钱
110
注册时间
2018-4-5
在线时间
20 小时
发表于 2019-1-29 17:50:57 | 显示全部楼层
感谢分享!
回复 支持 反对

使用道具 举报

26

主题

1533

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6369
金钱
6369
注册时间
2015-8-25
在线时间
1004 小时
发表于 2019-1-30 10:15:14 | 显示全部楼层
你的程序写的有问题啊
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-4-27
在线时间
16 小时
发表于 2019-5-3 18:08:58 | 显示全部楼层
strcmp(USART_RX_BUF,"LED亮"
warning:类型“u8*”的参数与类型“const char*”的参数不兼容
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2024-5-24
在线时间
0 小时
发表于 2024-5-24 17:15:51 | 显示全部楼层
居然在串口翻车了,感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 18:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表