[mw_shl_code=c,true][/mw_shl_code]
[mw_shl_code=c,true]unsigned int i=0;[/mw_shl_code]
[mw_shl_code=c,true]void Init_Timer4(void) //1ms周期
{
TIM4_CR1=0x01;//使能计数器
TIM4_IER=0x01;//更新中断使能
TIM4_EGR=0x01;
TIM4_CNTR=16;//计数器值
TIM4_ARR=16;//自动重装的值
TIM4_PSCR=0x07;//分频值 默认上电时是 2MHz/128=15625Hz 计数一下0.064ms 1ms需要计数16
}
#pragma vector=TIM4_OVR_UIF_vector//0x19
__interrupt void TIM4_OVR_UIF_IRQHandler(void)//对应IAP的中断地址:0x8060
{
i++;
TIM4_SR=0x00;
if(i==1000) //1s
{
PE_ODR^=0x20; //闪灯
i=0;
}
//return;
}[/mw_shl_code]
[mw_shl_code=c,true]
[mw_shl_code=c,true]
[mw_shl_code=c,true]刚接触两天STM8,想适应一下寄存器的写法。学到定时器这发现STM8S105k4的定时器4有点奇怪:[/mw_shl_code]
[mw_shl_code=c,true]首先时钟源,它是使用内部RC内部时钟16MHz,然后在上电时又默认使用经过分频后的2MHz...[/mw_shl_code]
[mw_shl_code=c,true]接着是看了手册,TIM4是向上计数,要想配置1ms的周期,按道理8位计数器的值跟重装值应该为 255-x , 然而现象并不如此[/mw_shl_code]
[mw_shl_code=c,true]然后把TIM4当做递减计数来使用,就行了,这跟手册是不是矛盾了?[/mw_shl_code]
另外,想问IAR有没有像Keil可以仿真波形或者看某段代码运行的时间?[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>