[求助] M4的定时器捕获计时和定时器捕获计数代码怎么写?求大神指点

拓磊   2014-7-17 14:13 楼主
M4的定时器捕获计时和定时器捕获计数代码怎么写?求大神指点

回复评论 (4)

2推荐 ZhengLang 

void Ultrasonic_Init(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); GPIOPinConfigure(GPIO_PB4_T1CCP0); GPIOPadConfigSet(GPIO_PORTB_BASE,GPIO_PIN_4,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU); GPIOPinTypeTimer(GPIO_PORTB_BASE,GPIO_PIN_4); // TimerClockSourceSet(TIMER1_BASE,TIMER_CLOCK_SYSTEM); // TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR|TIMER_CFG_A_CAP_TIME_UP); TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_BOTH_EDGES); TimerIntEnable(TIMER1_BASE, TIMER_CAPA_EVENT); IntEnable(INT_TIMER1A); TimerEnable(TIMER1_BASE, TIMER_A ); } flagX是用来判断是上升沿还是下降沿 void TIMER1A_Handler(void) { TimerIntClear(TIMER1_BASE,TIMER_CAPA_EVENT); flagX++; if(flagX==2) StartX=TimerValueGet(TIMER1_BASE,TIMER_A); if(flagX ==3) { EndX=TimerValueGet(TIMER1_BASE,TIMER_A); flagX=1; } } 这个函数用来得到高低电平之间的脉冲数 float UltrasonicValueGet(void) { if(EndXStartX) {Distance = EndX-StartX;} } 由于我这个程序高电平时间脉冲数少于0xffffff.所有最多有一次从最高到最低的跳变。如果高电平时间比较长。程序要修改下 本帖最后由 ZhengLang 于 2014-7-20 21:23 编辑
点赞  2014-7-20 21:21
这个其实可以看例程的
爱我所爱!https://home.eeworld.com.cn/static/image/smiley/default/loveliness.gif
点赞  2014-7-18 14:57
每个模块都有相关例程值得学习
爱我所爱!https://home.eeworld.com.cn/static/image/smiley/default/loveliness.gif
点赞  2014-7-18 15:00
引用: ZhengLang 发表于 2014-7-20 21:21
void Ultrasonic_Init(void)
{

谢谢
点赞  2014-7-27 21:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复