OpenEdv-开源电子网

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

想请教一下关于使用中断方式接收串口数据,接收到的数据赋给延时函数的问题

[复制链接]

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
发表于 2020-5-21 18:35:30 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 Formosa 于 2020-5-22 12:13 编辑

2.png 3.png 为什么我的程序实现不了想要的效果?应该怎么改?请大家帮帮忙,谢谢!
1.png

最佳答案

查看完整内容[请看2#楼]

我把串口中断程序改成这样,一个delay_ms(a)放在task1,一个delay_ms(a)放在task2,a是全局变量且默认值是1000,从串口输入数据后,一个任务确实延时a=输入数值毫秒,但另一个任务还是延时1000毫秒,这是为什么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-21 18:35:31 | 显示全部楼层
我把串口中断程序改成这样,一个delay_ms(a)放在task1,一个delay_ms(a)放在task2,a是全局变量且默认值是1000,从串口输入数据后,一个任务确实延时a=输入数值毫秒,但另一个任务还是延时1000毫秒,这是为什么?
a.png
b.png
回复

使用道具 举报

0

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-12-27
在线时间
0 小时
发表于 2020-5-21 18:35:32 | 显示全部楼层
帮顶,大家来帮忙解答一下。。
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2020-5-21 20:11:34 | 显示全部楼层
没明白你的意思
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-21 20:19:18 | 显示全部楼层

就是串口输入数值,再把这个数值传给延时函数,延时时间为输入的数值
回复

使用道具 举报

2

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
金钱
470
注册时间
2017-12-20
在线时间
61 小时
发表于 2020-5-21 21:29:03 | 显示全部楼层
a=temp    ????看不懂,不明白
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-22 10:08:38 | 显示全部楼层
怎么把从串口接收到的数据赋给一个参数,比如串口输入数字1000,怎么把这个数据传给延时函数,使其延迟1000ms?
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-22 10:40:09 | 显示全部楼层
淡然若梦 发表于 2020-5-21 21:29
a=temp    ????看不懂,不明白

我的想法是,a是默认的延时参数,如果串口输入数值,则将该数值付给temp,temp再赋给a
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-5-22 10:43:40 | 显示全部楼层
虽然不建议用全局变量,但你这个问题直接用全局变量就好了啊
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-22 10:57:50 | 显示全部楼层
a5820736 发表于 2020-5-22 10:43
虽然不建议用全局变量,但你这个问题直接用全局变量就好了啊

temp和a都是全局变量吧,我数据传参是不是传错了
回复

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3627
金钱
3627
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-5-22 12:35:35 | 显示全部楼层
在主函数那里有个接收数据的地方,在哪里进行赋值操作
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-22 13:05:49 | 显示全部楼层
hou18 发表于 2020-5-22 12:35
在主函数那里有个接收数据的地方,在哪里进行赋值操作

4.png 是在主函数加这段吗?好像不行哦
回复

使用道具 举报

9

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2020-5-8
在线时间
64 小时
 楼主| 发表于 2020-5-22 17:18:52 | 显示全部楼层
12楼的代码莫名其妙又可以实现目标了......
回复

使用道具 举报

2

主题

88

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
金钱
470
注册时间
2017-12-20
在线时间
61 小时
发表于 2020-5-27 20:18:32 | 显示全部楼层
为什么非要在串口接收函数里来处理这个延时时间啊,不可以在主函数中通过读取串口状态和结果来传值吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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