完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
时间2的配置如下:
时间1ms, /** 配置TIMER外设 param] none param[out] none retval */ void timer_config(void) { /* TIMER2配置:生成不同占空比的PWM信号: TIMER2CLK = SystemCoreClock / 72 = 1MHz */ timer_parameter_struct timer_initpara; rcu_periph_clock_enable(RCU_TIMER2); timer_deinit(TIMER2); timer_struct_para_init(&timer_initpara); /* TIMER2 配置 */ timer_initpara.prescaler = 71; //(71+1)/72000000*(999+1)=1/1000s=1ms timer_initpara.alignedmode = TIMER_COUNTER_EDGE; timer_initpara.counterdirection = TIMER_COUNTER_UP; timer_initpara.period = 999; timer_initpara.clockdivision = TIMER_CKDIV_DIV1; timer_initpara.repetitioncounter = 0; timer_init(TIMER2,&timer_initpara);//这里面会自动完成timer_autoreload_value_config的功能; timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP); timer_interrupt_enable(TIMER2,TIMER_INT_UP); nvic_irq_enable(TIMER2_IRQn,0U);//使能更新中断,这一句是必须有的,否则不进中断 timer_auto_reload_shadow_enable(TIMER2); timer_enable(TIMER2); } uint32_t G_TimerFlag = 0;//测试定时时间用 //定时器2的中断处理 void TIMER2_IRQHandler(void) { if(SET == timer_interrupt_flag_get(TIMER2, TIMER_INT_FLAG_UP)){ /* 清除通道 0 中断位 */ timer_interrupt_flag_clear(TIMER2, TIMER_INT_FLAG_UP); G_TimerFlag ++;//测试定时时间用 } } 在主循环中1s打印一次G_TimerFlag的值: while (1) { if(G_TimerFlag%1000 == 0){ printf("timer flag = %drn !",G_TimerFlag);//打印一次 } } 10s打印 可以看到1s打印一次; |
|
|
|
|
只有小组成员才能发言,加入小组>>
1654 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4742 浏览 0 评论
4232 浏览 9 评论
3824 浏览 16 评论
4400 浏览 1 评论
4215浏览 3评论
2382浏览 0评论
3398浏览 0评论
1161浏览 0评论
2845浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-3 08:02 , Processed in 0.474602 second(s), Total 44, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2052