困扰了一下午,希望得到大家的帮助。问题如题。串口初始化后不会进中断,但是在中断触发发,收完一个整包后,就会一直进串口1的收中断,收到的数据全是0xff。我把程序简单写下,大家看看怎么回事?比较着急,希望得到帮助!
#include "stm8s.h"
#include "stm8s_gpio.h"
#include "stm8s_tim1.h"
#include "stm8s_exti.h"
#include "stm8s_uart1.h"
#include "stm8s_clk.h"
#include "stm8s_flash.h"
...
void main()
{
....
UART1_DeInit();
UART1_Cmd(ENABLE);
UART1_Init((u32)2400, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_EVEN, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_TXE, DISABLE); //需要的时候再打开 UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
...
enableInterrupts();
while()
}
以上是主函数的关于串口1的初始化定义。
下面是关于中断处。
#include "stm8s_gpio.h"
#include "stm8s_tim1.h"
#include "stm8s_uart1.h"
#include "stm8s.h"
...
@far @interrupt void UART1_RX_IRQHandler(void)
{
u8 Temp;
u8 uCRC;
u8 ii;
Temp= UART1_ReceiveData8();
UART1_ClearITPendingBit(UART1_IT_RXNE
//UART1->SR&=0xDF;
PCL_UART.RxBuffer[PCL_UART.RdPtr++]=Temp;
...
}
struct interrupt_vector const _vectab[] = {
...
{0x82, UART1_RX_IRQHandler}, /* irq18 */
...
} |