完善资料让更多小伙伴认识你,还能领取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打印一次; |
|
|
|
只有小组成员才能发言,加入小组>>
3322 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9070 浏览 16 评论
4090 浏览 18 评论
1191浏览 3评论
613浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 19:23 , Processed in 1.179928 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号