就一个简单的实验程序
#include "STM8S103k3.h"
main()
{
unsigned char x;
// 首先初始化GPIO
CLK_CKDIVR=0x10;//4M
while(!(CLK_ICKR&0x02));//等待时钟就绪
PD_DDR|=0x04;
PD_CR1|=0x04;
PD_CR2&=~0x04;//推挽输出
//IWDG看门狗
//IWDG_KR=0xcc;
IWDG_KR=0x55;//禁止写保护
IWDG_PR=0x03;
IWDG_RLR=0x66;
IWDG_KR=0xaa;//刷新IWDG看门狗
// 然后初始化定时器4
TIM4_IER = 0x00; // 禁止中断
TIM4_EGR = 0x01; // 允许产生更新事件
TIM4_PSCR = 0x07; // 计数器时钟=主时钟/128=4MHZ/128
// 相当于计数器周期为32uS
TIM4_ARR = 255; // 设定重装载时的寄存器值,255是最大值
TIM4_CNTR = 255; // 设定计数器的初值
// 定时周期=(ARR+1)*32=8192uS
TIM4_CR1 = 0x01; // b0 = 1,允许计数器工作
// b1 = 0,允许更新
// 设置控制器,启动定时?
//TIM4_IER=0x01;
//_asm("rim");
while(1) // 进入无限循环
{
for(x=62;x>0;x--)
{
while((TIM4_SR & 0x01) == 0x00); // 等待更新标志
TIM4_SR = 0x00; // 清除更新标志
//IWDG_KR=0xaa;
}
PD_ODR = PD_ODR ^ 0x04;// LED驱动信号取反
}
}
软件仿真,TIM4_CNTR值不变,一直无法运行到断点处。。。
|