本帖最后由 lvben5d 于 2019-8-8 13:19 编辑
作为32位机,比起8位机捉襟见肘少的可怜的定时器,最弱的入门级32也有4个常规定时器和1个systick。 我最常用的是向上计数模式,极少项目用作向下定时。下面以GD32F130为例,贴图容易犯错的1个地方:
/* TIMER14 configuration */
TMinitpara.timer_prescaler = 7999; //36000 000/(8000-1)==》4.5Khz = 222us
TMinitpara.timer_alignedmode = TIMER_COUNTER_EDGE;
TMinitpara.timer_counterdirection = TIMER_COUNTER_UP;
TMinitpara.timer_period = 1; //字节超时设计为 222us ms 扫一行
TMinitpara.timer_repetitioncounter = 0;
timer_init(TIMER14, &TMinitpara);
timer_interrupt_flag_clear(TIMER14, TIMER_INT_UP);
timer_interrupt_enable(TIMER14, TIMER_INT_UP);
void TIMER14_IRQHandler(void)
{
timer_disable(TIMER14);
timer_interrupt_flag_clear(TIMER14, TIMER_INT_UP);
timer_counter_value_config(TIMER14, 0); //
show_256x16_oneline(Sysinfo.scan_line);
if(16 == ++Sysinfo.scan_line) Sysinfo.scan_line = 0; //从第1行 扫到16行 再回到1行 舟而复始 索引0 是因为数组存储
timer_enable(TIMER14);
}
PS: 来一波广告, 喜欢MINI主机的兄弟可以采购一组。 https://item.taobao.com/item.htm?id=600110357826 本人小店
|