完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以下是使用Timer1和PB14捕获外部脉冲个数的代码:
``` #include "stdio.h" #include "NUC126.h" #define TIMER_CLOCK_FREQ 48000000 #define PRESCALE 3 // Prescale value for Timer1 #define EVENT_CNT 4 // Select the event as the counter source #define TIMER1_IRQn TMR1_IRQn volatile uint32_t g_u32Count = 0; void TMR1_IRQHandler(void) { // Clear the interrupt flag TIMER1->INTSTS = TIMER_INTSTS_TIF_Msk; // Get the captured value uint32_t u32CapVal = TIMER_GetCaptureData(TIMER1, 0); // Increment the count g_u32Count++; } int main() { // Enable peripheral clock CLK_EnableModuleClock(TMR1_MODULE); CLK_EnableModuleClock(GPB_MODULE); // Set PB.14 as input mode PB->MODE &= ~GPIO_MODE_MODE14_Msk; // Enable PB.14 digital input path PB->DINOFF &= ~(BIT14 << GPIO_DINOFF_DINOFF_Pos); // Set PB.14 as TIMER1 counter pin SYS->GPB_MFPH |= SYS_GPB_MFPH_PB14MFP_TM1_EXT; // Configure Timer1 TIMER_Open(TIMER1, TIMER_CONTINUOUS_MODE, PRESCALE); TIMER_SET_CMP_VALUE(TIMER1, 0xFFFFFF); // Set comparator value to the maximum TIMER_SET_CAPTURE_CONCRETE_EVENT(TIMER1, 0, TIMER_CAPTURE_EDGE, EVENT_CNT); // Set capture concrete event // Enable timer capture interrupt TIMER_EnableCaptureInt(TIMER1, 0); NVIC_EnableIRQ(TIMER1_IRQn); // Start Timer1 TIMER_Start(TIMER1); while(1) { printf("Count: %dn", g_u32Count); } } ``` 在此代码中,我们使用TIMER1和PB14来捕获外部脉冲的个数。首先,我们将PB14设置为输入模式,并将其配置为TIMER1的计数器引脚。然后,我们配置TIMER1为连续模式,并将预分频值设置为3(即时钟频率除以4)。我们还设置用于捕获外部事件的计数器事件,并启用TIMER1的捕获中断。在中断处理程序中,我们获取捕获值并将计数器值增加1。最后,在主循环中,我们输出计数器值并持续监测外部事件。 如果代码运行时没有捕获到脉冲,请检查以下几个方面: 1. 确保输入脉冲的频率不超过TIMER1的最大计数速率。如果脉冲超过了计数速率,则需要将预分频值调整为一个更小的值,以便TIMER1可以处理更高的计数速率。 2. 确保输入脉冲的电平符合TIMER1的输入极性。例如,如果TIM1_EXT是上升沿触发,则输入脉冲应该是上升沿触发的。 3. 确保TIMER1的捕获中断已启用,并且中断处理程序能够正确地获取捕获值并更新计数器变量。 4. 如果仍无法捕获脉冲,请仔细检查电路,并确保输入脉冲已正确连接到PB14。 |
|
|
|
只有小组成员才能发言,加入小组>>
897 浏览 1 评论
2295 浏览 5 评论
2605 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2415 浏览 6 评论
2317 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
465浏览 9评论
474浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
578浏览 6评论
455浏览 5评论
489浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-22 08:17 , Processed in 0.980262 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191