我是个STM8初学者,在用RS232通信时老进不去中断,用的是IAR,基本上仿照风驰的例子来做,仿真没问题,就是进不去中断,求指导!!! 版面有限,前面的初始化我就不写了,真心求指导!!
int main(void)
{
init_devices();
while (1)
{
u8 k;
k = GPIO_ReadInputData(GPIOD);
UART1_SendByte(k);
Delay(0xffff);
}
}
#pragma vector=0x14 //UART1_RX
__interrupt void UART1_RX_IRQHandler(void)
{
u8 Res,port;
if(UART1_GetITStatus(UART1_IT_RXNE )!= RESET)
{/*接收中断(接收到的数据必须是 结尾)*/
Res =UART1_ReceiveData8();
/*(USART1->DR);读取接收到的数据,当读完数据后自动取消RXNE的中断标志位*/
if(Res>=0x0f)
{
port = GPIO_ReadInputData(GPIOD);
UART1_SendByte(port);
}
}
}
void init_devices(void)
{
asm("sim");//关全局中断
/* Configures clocks */
CLK_Configuration();
/* Configures GPIOs */
GPIO_Configuration();
Uart_Init();
//EXTI2_init();
asm("rim");//开全局中断
}
void Delay(u16 ms)
{
for( ;ms > 0;ms--)
{
for(int k = 327;k > 0;k--);
}
}
void CLK_Configuration(void)
{
/* Fmaster = 16MHz */
/*!<Set High speed internal clock */
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
}
void GPIO_Configuration(void)
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_IN_PU_NO_IT);
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_IN_PU_NO_IT);
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);
GPIO_Init(GPIOD, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT);
} |