
IAR for STM8中断问题.我的程序好像进不去中断,PC7控制LED,如能进去LED应该会亮
#include<iostm8l152c6.h>#include<intrinsics.h>voidPort_Init(void){PC_DDR_bit.DDR1=0;P...
#include <iostm8l152c6.h>
#include <intrinsics.h>
void Port_Init(void){
PC_DDR_bit.DDR1 = 0;
PC_CR1_bit.C11 = 1;
PC_CR2_bit.C21 = 0;
PC_DDR_bit.DDR7 = 1;
PC_CR1_bit.C17 = 1;
PC_CR2_bit.C27 = 0;
}
void TIM4_init()
{
TIM4_IER = 0x00; //Disable timer4 interrupt
TIM4_EGR = 0x01; //Update generation
TIM4_PSCR = 0x07; //Prescaler value f = 8MHZ/512
TIM4_ARR = 255;
TIM4_CNTR = 255;
TIM4_CR1 = 0x01; //counter enable
TIM4_IER = 0x01; //Enable timer4 interrupt
}
#pragma vector=TIM4_UIF_vector
__interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
TIM4_SR1 &=~0x01;
PC_ODR_bit.ODR7 ^= 1;
}
void main(void)
{
__disable_interrupt();
CLK_CKDIVR = 0x00;
Port_Init();
TIM4_init();
__enable_interrupt();
for(;;)
{;
}
}
} 展开
#include <intrinsics.h>
void Port_Init(void){
PC_DDR_bit.DDR1 = 0;
PC_CR1_bit.C11 = 1;
PC_CR2_bit.C21 = 0;
PC_DDR_bit.DDR7 = 1;
PC_CR1_bit.C17 = 1;
PC_CR2_bit.C27 = 0;
}
void TIM4_init()
{
TIM4_IER = 0x00; //Disable timer4 interrupt
TIM4_EGR = 0x01; //Update generation
TIM4_PSCR = 0x07; //Prescaler value f = 8MHZ/512
TIM4_ARR = 255;
TIM4_CNTR = 255;
TIM4_CR1 = 0x01; //counter enable
TIM4_IER = 0x01; //Enable timer4 interrupt
}
#pragma vector=TIM4_UIF_vector
__interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
TIM4_SR1 &=~0x01;
PC_ODR_bit.ODR7 ^= 1;
}
void main(void)
{
__disable_interrupt();
CLK_CKDIVR = 0x00;
Port_Init();
TIM4_init();
__enable_interrupt();
for(;;)
{;
}
}
} 展开
2个回答
展开全部
stm8l单片机默认外设是关闭的,使用时需要打开CLK_PCKENR寄存器设置
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询