OpenEdv-开源电子网

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

原子大哥来相助!书上的例程和网盘上的例程,定时器输入捕获!

[复制链接]

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2014-5-2
在线时间
0 小时
发表于 2014-5-12 22:50:09 | 显示全部楼层 |阅读模式
5金钱
原子大哥,在《原子教你玩STM32》(库函数版),书里面讲定时器输入捕获实验,用的是中断来完成数据处理和捕获设置等关键操作的,而在新下载的例程里面,却是在while循环下,函数来循环检测,如果我需要的测量方案是:定时器捕获时钟为72M,我觉得是书上提供的中断方案较好,请问你例程里面,这样子写的初衷是,优势较书上的如何呢?麻烦原子大哥百忙抽空解答,谢谢~
[mw_shl_code=c,true]int main(void) { u32 temp=0; delay_init(); //延时函数初始化 NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 uart_init(9600); //串口初始化为9600 LED_Init(); //LED端口初始化 TIM3_PWM_Init(899,0); //不分频。PWM频率=72000/(899+1)=80Khz TIM5_Cap_Init(0XFFFF,72-1); //以1Mhz的频率计数 while(1) { delay_ms(10); TIM_SetCompare2(TIM3,TIM_GetCapture2(TIM3)+1); if(TIM_GetCapture2(TIM3)==300)TIM_SetCompare2(TIM3,0); if(TIM5CH1_CAPTURE_STA&0X80)//成功捕获到了一次上升沿 { temp=TIM5CH1_CAPTURE_STA&0X3F; temp*=65536;//溢出时间总和 temp+=TIM5CH1_CAPTURE_VAL;//得到总的高电平时间 printf("HIGH:%d us\r\n",temp);//打印总的高点平时间 TIM5CH1_CAPTURE_STA=0;//开启下一次捕获 } } }[/mw_shl_code]

最佳答案

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

书上的代码就是光盘的代码哦。 都是在中断里面完成捕获的。 主函数的while里面只是用if判断捕获完成而已以,并没有去完成捕获。 仅仅是判断是否完成。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-12 22:50:10 | 显示全部楼层
书上的代码就是光盘的代码哦。
都是在中断里面完成捕获的。
主函数的while里面只是用if判断捕获完成而已以,并没有去完成捕获。
仅仅是判断是否完成。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-8-19
在线时间
22 小时
发表于 2014-5-12 23:17:07 | 显示全部楼层
感觉应该是各有优势吧,在中断里面处理和在外面处理不一样,如果你的捕获的脉冲周期很短的话,在主程序跑,应该是收集不到吧,
请教下原子哥,我现在用输入捕获 也遇见1个问题:1:请问如何关闭输入捕获的中断,我想能控制输入捕获的开启和关闭,但是我用TIM_Cmd(TIM5,DISABLE ); 这个函数无法关闭,初始化以后中断还是开启的,2:中断开启以后,感觉有时候进不去中断,是怎么回事? 求指教 帮忙分下 谢谢了 感谢
回复

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2014-5-2
在线时间
0 小时
 楼主| 发表于 2014-5-13 09:37:36 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥,中断服务函数是写在time.c的文件里面,中断函数不一定要放到stm32f10x_it.c这个文件里,随便在哪个 .c 文件中都行,固件库都搞到这个stm32f10x_it.c文件里是为了方便统一管理吧。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-13 23:20:48 | 显示全部楼层
回复【4楼】M4学习:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-8 02:58

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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