OpenEdv-开源电子网

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

定时器输入的这两个语句是干嘛使的?文档里没说,我将其注释掉功能正常

[复制链接]

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
发表于 2022-9-27 21:06:37 | 显示全部楼层 |阅读模式
1金钱

最佳答案

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

明白了,这两句是设置DS0LED灯为呼吸灯,以证实程序在运行
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-9-27 21:06:38 | 显示全部楼层
LcwSwust 发表于 2022-9-28 15:25
通用方法:点右键 go to define of...可查看函数的代码,看看它设置了哪些寄存器,对照单片机的参考手册 ...

明白了,这两句是设置DS0LED灯为呼吸灯,以证实程序在运行
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-9-28 11:33:45 | 显示全部楼层
看不到内容,重新发一下。
专治疑难杂症
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-9-28 15:17:22 | 显示全部楼层
LcwSwust 发表于 2022-9-28 11:33
看不到内容,重新发一下。

                TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-9-28 15:19:05 | 显示全部楼层
LcwSwust 发表于 2022-9-28 11:33
看不到内容,重新发一下。

           while(1)
        {
                delay_ms(10);
                TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);                 
                if(TIM2CH1_CAPTURE_STA&0X80)//成功捕获到了一次高电平
                {
                        temp=TIM2CH1_CAPTURE_STA&0X3F;
                        temp*=65536;                                        //溢出时间总和
                        temp+=TIM2CH1_CAPTURE_VAL;                //得到总的高电平时间
                        printf("HIGH:%d us\r\n",temp);        //打印总的高点平时间
                        TIM2CH1_CAPTURE_STA=0;                        //开启下一次捕获
                }
        }

这是while里面的代码,具体疑问是TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
                if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);        两句,文档里没介绍
回复

使用道具 举报

11

主题

2131

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4728
金钱
4728
注册时间
2015-1-10
在线时间
590 小时
发表于 2022-9-28 15:24:00 | 显示全部楼层
kkxc 发表于 2022-9-28 15:19
while(1)
        {
                delay_ms(10);

TIM1控制的应该是LED吧,你的输入捕获是TIM2,TIM1在干嘛不影响你TIM2
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8463
金钱
8463
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-9-28 15:25:43 | 显示全部楼层
kkxc 发表于 2022-9-28 15:19
while(1)
        {
                delay_ms(10);

通用方法:点右键 go to define of...可查看函数的代码,看看它设置了哪些寄存器,对照单片机的参考手册,看那个寄存器是干嘛用的。
从函数名字来看,Tim_SetCompare是设置比较值,Tim_GetCapture是获取捕获值,查一下定时器的捕获功能。
专治疑难杂症
回复

使用道具 举报

32

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2022-9-21
在线时间
14 小时
 楼主| 发表于 2022-9-28 15:49:55 | 显示全部楼层
阿侑kevin 发表于 2022-9-28 15:24
TIM1控制的应该是LED吧,你的输入捕获是TIM2,TIM1在干嘛不影响你TIM2

确实,这两句是设置DS0LED灯为呼吸灯,以证实程序在运行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 01:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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