void CLK_INIT(void)
{
CLK_CKDIVR = 0x19; /*HSI/8、CPU = 2/2,1M速度*/
CLK_PCKENR1 = 0x04; /*只开启uart1的时钟*/
CLK_PCKENR2 = 0x00; /*打开ADC的时钟*/
}
/***********************************/
//
//
/**********************************/
void IO_INIT(void)
{
PA_CR1 = 0x00; /*推挽输出*/
PA_CR2 = 0x00; /*最大输出为2MHZ,禁止外部中断*/
PA_DDR |= 0x20; /*PA5为输出*/
}
void UART1_INIT(void)
{
UART1_BRR2 = 0x00;
UART1_BRR1 = 0x0d; /*2M的Fmaster下9600的波特率*/
UART1_DR = 0xaa;
UART1_CR2 = 0x08; /*发送完寄存器空,发送使能*/
UART1_CR3 = 0x00; /*1个停止位*/
}
#pragma vector = UART1_T_TXE_vector
__interrupt __root void UART1_TX(void)
{
UART1_SR = 0x00;
UART1_DR = 0xaa;
}
上面是我的初始化和中断函数,在IAR FOR STM8中写的。现在情况是这样的。用STLINK连接三合一小板DEBUG的时候,程序可以进入中断,但是UART1_DR永远都是0x00,不会根据我的需要来改变。这到底是怎么回事啊? |