OpenEdv-开源电子网

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

小白想要实现以下的功能要怎么做?

[复制链接]

7

主题

26

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
15 小时
发表于 2019-9-3 09:36:34 | 显示全部楼层 |阅读模式
7金钱
单片机上电运行后上位机串口发送特定的字符,单片机接收到之后,程序里自己写的函数的某个参数就会发生相应的变化,这个参数变化之后再执行main函数,这个怎么搞,我在main函数的一开头写了if条件判断时候,发现程序不运行。

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

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-9-3 12:26:41 | 显示全部楼层
程序一开始就执行main函数了
你可以在串口接收到特定字符后用strcmp函数去进行比较,如果确实是接收到特定字符,再去调用你写的函数吧
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2019-9-3 13:40:21 | 显示全部楼层
你的意思是,单片机上电开始初始化外设,假设串口接受到上位机特定的字符,然后跳入到while循环里执行,对吗?
回复

使用道具 举报

7

主题

26

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
15 小时
 楼主| 发表于 2019-9-3 15:00:59 | 显示全部楼层
peng1554 发表于 2019-9-3 12:26
程序一开始就执行main函数了
你可以在串口接收到特定字符后用strcmp函数去进行比较,如果确实是接收到特定 ...

嗯嗯,你的回答确实听起来能实现功能,如果没有更好的答案,就把你设为最佳答案
回复

使用道具 举报

7

主题

26

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
15 小时
 楼主| 发表于 2019-9-3 15:02:48 | 显示全部楼层
jiangyy 发表于 2019-9-3 13:40
你的意思是,单片机上电开始初始化外设,假设串口接受到上位机特定的字符,然后跳入到while循环里执行,对 ...

对的,是这个意思,我刚接触单片机,总觉得他一上电就执行while1,这样很多功能实现不了
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2019-9-3 16:33:54 | 显示全部楼层
定义一个全局变量数组RevceBuff[60],类型是  char ,其实对应的就是串口中断的BUF数组, 初始化串口USART_Init(115200); 然后
while(RevceBuff[0] == 'B');     也就是判断串口接收数组的第一个是否等于'B',是的话 就跳出while循环,进入到主循环执行任务去了,否则一直在前面说的那个while(RevceBuff[0] == 'B');中
回复

使用道具 举报

7

主题

26

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
15 小时
 楼主| 发表于 2019-9-3 17:10:02 | 显示全部楼层
jiangyy 发表于 2019-9-3 16:33
定义一个全局变量数组RevceBuff[60],类型是  char ,其实对应的就是串口中断的BUF数组, 初始化串口USA ...

这个while(RevceBuff[0] == 'B'); 的位置是在main函数里面,while(1)的前面吗
回复

使用道具 举报

7

主题

26

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
15 小时
 楼主| 发表于 2019-9-4 10:18:51 | 显示全部楼层
jiangyy 发表于 2019-9-3 16:33
定义一个全局变量数组RevceBuff[60],类型是  char ,其实对应的就是串口中断的BUF数组, 初始化串口USA ...

单片机一上电,我会用电脑端给单片机的串口4发送一串字符,字符以k开头,检测到这串字符要先执行我自己写的的函数,然后在执行while(1),我程序这样写对吗?
无标题.png
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-9-4 11:04:17 | 显示全部楼层
先从基础练起吧,搞清楚程序执行流程,代码自然就能写出来了。
回复

使用道具 举报

53

主题

567

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2099
金钱
2099
注册时间
2017-2-11
在线时间
306 小时
发表于 2019-9-4 13:24:50 | 显示全部楼层
mnvbcxz 发表于 2019-9-4 10:18
单片机一上电,我会用电脑端给单片机的串口4发送一串字符,字符以k开头,检测到这串字符要先执行我自己写 ...

对的  可以这样写
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-16 06:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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