1、單片機時鐘設定:
//fmaster=fcpu=2MHz
CLK_ECKR=0x00;
CLK_ICKR=0x01;
CLK_CMSR=0xe1;
CLK_SWR=0xe1;
CLK_CKDIVR=0x18;
2、定時器TIM2初始化
//定時器2初始化fmaster/分頻=2M/2=1M,1us計數一次,50us 中斷一次
void TIM2_Init(void)
{
_asm("sim"); //sim是禁止中斷
TIM2_IER = 0x00; //禁止中斷
TIM2_EGR =0x01; //允許產生更新標志
TIM2_PSCR =0x01; //設置時鐘分頻 2M/2=1MHz---1us
TIM2_ARRH = 0x00; //0x32=50; 周期=50次,每50us復位一次定時器2
TIM2_ARRL = 0x32; //ARR自動裝載值,每1us遞減1
TIM2_CNTRH=0x00; //初值
TIM2_CNTRL=0x00;
TIM2_CR1 |= 0x81; //開啟定時器
TIM2_IER |= 0x01; //允許中斷
_asm("rim"); //rim使能中斷
}
3、中斷執行程序
@far @interrupt void TIM2_UPD_IRQHandler(void)
{
TIM2_SR1 &=~(0x01);//=0x0e;//清楚中斷標志位
PC_ODR=~PC_ODR;//需要先配置pc,pb為輸出口
PB_ODR=~PB_ODR; }
4、修改中斷向量表
打開stm8_interrupt_vector.c文件,添加如下內容:
extern @far @interrupt void TIM2_UPD_IRQHandler(void);
修改下面一行:
{0x82, NonHandledInterrupt},
為:
{0x82,(interrupt_handler_t)TIM2_UPD_IRQHandler},
到此OK了,可以試試。
在我操作過程中,遇到一個很頭疼的問題,就是下載器常常不好用,錯誤號30006,30003.
這兩種情況下,首先確認你的stlink接線是否正確,其次量一下4根下載針電壓,正確為:5V,Gnd,NRST-5V,SWIM-0v,(大致如此)。如果沒有上面的問題,就可能是下載器和電腦沒有連接好。需要重新軟件連接和確認(Target-setting)。