完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
N76E003的输入捕获功能还是挺强大的,具体的说明在这里就不多讲,配置的步骤如下:
(1) 将要检测输入捕获的IO口配置成输入模式; (2) 选择信道输入CAP0/1/2,在官方的例程中使用tiMER2_CAP1_Capture_Mode等该宏定义进行进行配置,但是在这里一定要注意,进入这个宏定义,是对T2CON和T2MOD的配置,而T2MOD是对定时器2的时钟进行分频操作的寄存器,而该宏定义直接将高4位赋值为8,所以是不分频,因此,如果有对定时器2分频的操作,一定将分频语句放在这条语句之后,否则你的分频是无效的。也就是下面步骤(3) (3)设置分频(可选) 4)然后是设置触发捕获的方式,支持双边沿,上升沿,下降沿,具体按照实际需求来 (5) 设置CAPCR,这个是关键的步骤,设置这个之后在发生了捕获事件之后就会直接将定时器的值清0,重新开始计时,这样的好处是我们完全可以不去管它会溢出的情况了。 (6)如果是中断的方式就开启中断设置中断标志位,编写中断服务函数等 7)然后读取CxH,CxL中的数据(如 data=(C1H)<<4+C1L); 如何验证捕获出来的数据是不是准确的呢? (1) 用示波器看你输入的波形,最好是固定频率的方波,假设配置的是双边沿触发的,那么就在示波器上测波形充上升沿到下降沿的时间是多少,然后与你程序中读出的 data*1/频率,例如,16M的时钟是62.5ns,就用data*62.5 的值与示波器上测量的值比较,看误差大小。 (2)如果的项目中的波形是频率并不是固定的,那么你可以尝试使用PWM配置出固定频率的波形,送到这个IO口上,或者可以从示波器上的右下角的两个端口中将上面的端口中连接到你的这个输入端口中,示波器的这个端口提供的是一个固定的频率50%占空比的方波,具体的频率我也忘了。 |
|
相关推荐
1个回答
|
|
无效的。 (3) 配置定时器的工作模式,选择捕获模式CAPM0/1/2,在官方的例程中使用TIMER2_CAP1_Capture_Mode等该宏定义进行配置,同样需要注意到该宏定义对T2MOD寄存器的赋值操作。 (4) 配置中断,使能定时器的捕获中断,如开启T2IE位或者IE寄存器的ET2位。 (5) 在中断服务函数中,读取捕获寄存器,即可得到输入信号的频率或者占空比。需要注意的是,在输入捕获模式下,捕获到的上升或下降沿的时间点是以定时器计数器的值作为基准的,因此必须确保定时器的精度和稳定性。
|
|
|
|
只有小组成员才能发言,加入小组>>
3049 浏览 9 评论
2750 浏览 16 评论
3264 浏览 1 评论
8594 浏览 16 评论
3856 浏览 18 评论
9456浏览 3评论
742浏览 3评论
377浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
369浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2102浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-7-4 23:45 , Processed in 0.897012 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191