完善资料让更多小伙伴认识你,还能领取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 ); // 清除中断标志 } } |
|
|
|
只有小组成员才能发言,加入小组>>
345 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2806 浏览 2 评论
2303 浏览 1 评论
852浏览 2评论
920浏览 2评论
548浏览 2评论
CH32V203中CAN测试模式中,静默环回模式需上电才能恢复是特性吗?
571浏览 2评论
请问CH446Q可否采用3.3V MCU/FPGA进行控制?
505浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-1 13:54 , Processed in 0.909812 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号