高级会员
- 积分
- 839
- 金钱
- 839
- 注册时间
- 2016-8-23
- 在线时间
- 116 小时
|
楼主 |
发表于 2016-9-6 13:45:04
|
显示全部楼层
经过修改后可以进中断 了,但是问题又来了,主函数的LED_HB仍然在不断闪烁,不受中断影响。我所设置的定时100ms进入中断好像没有用了,不知道是不是真的定时100ms才进入的中断。哪位大神会的请帮解决下,谢谢!
#include <stm8l052c6.h>
#define LED_HB 0x01 << 1
#define LED_Er 0x01 << 0
#define UIE 1 << 0
#define CEN 1 << 0
void delay(unsigned int time);
void IO_Init(void)
{
PD_ODR=0x00;
PD_DDR=(LED_HB)|(LED_Er);
PD_CR1=(LED_HB)|(LED_Er);
PD_CR2=0x03;
}
void TIM4_Init(void)
{
TIM4_PSCR=0x0f; //The prescaler value of 250KHZ
TIM4_IER=(UIE); //open timer interrupt
TIM4_ARR=0xff;
TIM4_CNTR=0xff;
TIM4_CR1=(CEN); //Start time
}
void main(void)
{
CLK_PCKENR1=0x0f;
IO_Init();
TIM4_Init();
_asm("rim");
while(1)
{
PD_ODR^=LED_HB;
delay(50000);
}
}
@far @interrupt void TIM4_IRQ(void)
{
TIM4_SR1=0x00;
PD_ODR^=LED_Er;
}
// This function is very roughly 1ms delay IT IS not precise
// max input is 65500
void delay(unsigned int time)
{
while(time--);
}
|
|