完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我TMR0想捕捉脉冲里高电平的持续时间
我的配置如下: void Cap_Init( void ) { GPIOA_ResetBits( GPIO_Pin_9 ); // 配置PWM口 PA9 GPIOA_ModeCfg( GPIO_Pin_9, GPIO_ModeIN_Floating ); TMR0_CapInit( Edge_To_Edge ); // 边沿 TMR0_CAPTimeoutCfg( 0xFFFFFFFF ); // 设置捕捉超时时间 TMR0_ITCfg( ENABLE, TMR0_3_IT_DATA_ACT ); // 开启有效电平结束中断 PFIC_EnableIRQ( TMR0_IRQn ); } 中断判断是高电平还是低电平: __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void TMR0_IRQHandler( void ) // TMR0 定时中断 { if( TMR0_GetITFlag( TMR0_3_IT_DATA_ACT ) ) { TMR0_ClearITFlag( TMR0_3_IT_DATA_ACT ); // 清除中断标志 if( ( TMR0_CAPGetData( ) >> 25 ) != 0 ) { PRINT( "CAP_H:%.1f ", ( TMR0_CAPGetData( ) & 0x1FFFFFF )/60000.0 ); } } } 但是为啥我捕捉到的是低电平时间? |
|
相关推荐
2个回答
|
|
MR0不支持DMA的功能,其他和TMR1的使用方式一样
|
|
|
|
我知道问题了
我在中断里面读取cap值并判断完高低电平之后再次读取判断持续时间的时候读到的值 已经是低电平的了,应该是这样: __attribute__((interrupt("WCH-Interrupt-fast"))) __attribute__((section(".highcode"))) void TMR0_IRQHandler( void ) // TMR0 定时中断 { if( TMR0_GetITFlag( TMR0_3_IT_DATA_ACT ) ) { UINT32 temp = TMR0_CAPGetData( ); if( ( temp >> 25 ) != 0 ) { PRINT( "CAP_H:%.1frn", ( temp & 0x1FFFFFF )/60000.0 ); } TMR0_ClearITFlag( TMR0_3_IT_DATA_ACT ); // 清除中断标志 } } |
|
|
|
只有小组成员才能发言,加入小组>>
546 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2917 浏览 2 评论
2419 浏览 1 评论
897浏览 2评论
707浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
434浏览 1评论
555浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
831浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-6 15:09 , Processed in 1.100579 second(s), Total 80, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号