ผมใช้ Timer 2,3 บน STM8S105C4 แต่ว่ามันไม่ทำงานอ่ะคับ รบกวนผู้รู้ช่วยวิเคราะห์หน่อยคับ
ลองใช้โหนด Simulator Debug ใน STVD แล้วค่า TIM2_CNTR หรือ TIM3_CNTR ของอ่านมาค่ามาไม่เห็นมันนับเลยคับ (temp=TIM3_GetCounter() )
Function initial TIM3 เป็นดังนี้
void init_timer3(void)
{
TIM3_DeInit();
TIM3_TimeBaseInit(TIM3_PRESCALER_64,0);
TIM3_SetCounter(0);
TIM3_Cmd(DISABLE);
}
ผม Cleck update flag ใน delay function แต่มันไม่ overflow เลย งงมากเลยคับ
void delay_ms(u16 ms)
{
u16 i;
u16 temp=0;
for(i=0;i<ms;i++)
{
TIM3_Cmd(DISABLE);
TIM3_SetCounter(65286); // 65535-250+1=65286 interrupt flag set when overflow
TIM3_ClearFlag(TIM3_FLAG_UPDATE);
TIM3_Cmd(ENABLE);
while(TIM3_GetFlagStatus(TIM3_FLAG_UPDATE)!=SET)
{
temp=TIM3_GetCounter();
}
TIM3_ClearFlag(TIM3_FLAG_UPDATE);
TIM3_Cmd(DISABLE);
}
}
เปิด clk ให้มันยังครับ หรือเลือก srouce ของ clk ยังครับ
มันเป็น Default ตั้งแต่ CPU boot แล้วคับว่าให้จ่าย Peripheral clock
Simulator Debug มันไม่นับอยู่แล้วนะ
ต้องลงไปดีบักบอร์ดจริงครับ