完善资料让更多小伙伴认识你,还能领取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:%.1f\r\n", ( temp & 0x1FFFFFF )/60000.0 ); } TMR0_ClearITFlag( TMR0_3_IT_DATA_ACT ); // 清除中断标志 } } |
|
|
|
只有小组成员才能发言,加入小组>>
ch554g的板子准备烧录程序,用串口总是显示等待设备连接是为啥
730浏览 14评论请问ch32v307用ch-link调试或者读写有什么特殊操作方法吗?
662浏览 13评论Windows系统下如何确定COM口为CH340/CH341设备?
1748浏览 12评论CH32V307以太网接近满速后,几秒或几十秒后就死机怎么解决?
1565浏览 11评论小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-5-18 21:02 , Processed in 0.627243 second(s), Total 89, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 粤ICP备 14022951 号