#pragma vector=0x14
__interrupt void UART1_RX_IRQHandler(void)//UART1接收寄存器满中断
{
u8 RX_temp;
if(UART1_GetITStatus(UART1_IT_RXNE)!=RESET)//UART1接收数据寄存器不为空中断
{
RX_temp=UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
UART1_ClearFlag(UART1_FLAG_RXNE);//清除UART1接收完成标志位
}
if(UART1_GetFlagStatus(UART1_FLAG_PE) != RESET)//奇偶校验错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if( UART1_GetITStatus(UART1_IT_OR) != RESET)//溢出错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if(UART1_GetFlagStatus(UART1_FLAG_FE) != RESET)//帧错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
}
#endif
Warning[Pe550]: variable "RX_temp" was set but never used D:\STM8S207RB程序\7串口UART1_To_printf\user\stm8s_interruput.c 146
修改如下,RX_temp就不会报警了
#pragma vector=0x14
__interrupt void UART1_RX_IRQHandler(void)//UART1接收寄存器满中断
{
u8 RX_temp=0;//必须初始化
(void)RX_temp;//清除"RX_temp" was set but never used的警告
if(UART1_GetITStatus(UART1_IT_RXNE)!=RESET)//UART1接收数据寄存器不为空中断
{
RX_temp=UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
UART1_ClearFlag(UART1_FLAG_RXNE);//清除UART1接收完成标志位
}
if(UART1_GetFlagStatus(UART1_FLAG_PE) != RESET)//奇偶校验错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if( UART1_GetITStatus(UART1_IT_OR) != RESET)//溢出错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if(UART1_GetFlagStatus(UART1_FLAG_FE) != RESET)//帧错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
}
#endif
#include "stm8s.h"//包含CPU头文件,使能int8_t,int16_t,int32_t,uint8_t,uint15_t,uint32_t,s8,s16,s32,u8,u16,u32,bool
#pragma vector=1 //设置中断向量为1
__interrupt void TRAP_IRQHandler(void)//软件中断
{
}
#pragma vector=2
__interrupt void TLI_IRQHandler(void) //外部最高级中断
{
}
#pragma vector=3
__interrupt void AWU_IRQHandler(void) //自动唤醒HALT模式中断
{
}
#pragma vector=4
__interrupt void CLK_IRQHandler(void) //时钟控制器
{
}
#pragma vector=5
__interrupt void EXTI_PORTA_IRQHandler(void) //端口A外部中断
{
}
#pragma vector=6
__interrupt void EXTI_PORTB_IRQHandler(void) ///端口B外部中断
{
}
#pragma vector=7
__interrupt void EXTI_PORTC_IRQHandler(void) //端口C外部中断
{
}
#pragma vector=8
__interrupt void EXTI_PORTD_IRQHandler(void) //端口D外部中断
{
}
#pragma vector=9
__interrupt void EXTI_PORTE_IRQHandler(void) //端口E外部中断
{
}
#ifdef STM8S903
#pragma vector=0xA
__interrupt void EXTI_PORTF_IRQHandler(void) //端口F外部中断
{
}
#endif
#ifdef STM8S208
#pragma vector=0xA
__interrupt void CAN_RX_IRQHandler(void) //CAN RX 中断
{
}
#pragma vector=0xB
__interrupt void CAN_TX_IRQHandler(void) //CAN TX/ER/SC中断
{
}
#endif
#pragma vector=0xC
__interrupt void SPI_IRQHandler(void) //SPI发送完成中断
{
}
#pragma vector=0xD
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void) //TTM1更新/上溢出/下溢出/触发/刹车
{
// UART1_RX_END();
TIM1_ClearITPendingBit(TIM1_IT_UPDATE);//清除TIM1中断标志
}
#pragma vector=0xE
__interrupt void TIM1_CAP_COM_IRQHandler(void) //TIM1捕获/比较
{
}
#ifdef STM8S903
#pragma vector=0xF
__interrupt void TIM5_UPD_OVF_BRK_TRG_IRQHandler(void)//TTM5更新/上溢出/下溢出/触发/刹车
{
}
#pragma vector=0x10
__interrupt void TIM5_CAP_COM_IRQHandler(void)//TIM5捕获/比较
{
}
#else
#pragma vector=0xF
__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)//TTM2更新/上溢出/下溢出/触发/刹车
{
}
#pragma vector=0x10
__interrupt void TIM2_CAP_COM_IRQHandler(void)//TIM2捕获/比较
{
}
#endif
#if defined (STM8S208) || defined(STM8S207) || defined(STM8S105)
#pragma vector=0x11
__interrupt void TIM3_UPD_OVF_BRK_IRQHandler(void)//TTM3更新/上溢出/下溢出/触发/刹车
{
}
#pragma vector=0x12
__interrupt void TIM3_CAP_COM_IRQHandler(void)//TIM3捕获/比较
{
}
#endif
//#ifndef STM8S105
#if defined (STM8S208) || defined(STM8S207) || defined(STM8S105)
#pragma vector=0x13
__interrupt void UART1_TX_IRQHandler(void)//UART1发送完成中断
{
if(UART1_GetITStatus(UART1_IT_TXE) != RESET)//UART1发送数据寄存器为空中断
{
//发送"非最后一个字节"时
//UART1_SendData8(UART1_TX_Buffer[0);
//将UART1_TX_Buffer[UART1_TX_Buffer_Send_Index]通过发送出去
//发送UART1_SendData8()或UART1_SendData9()会自动清除TXE位和TC位
//发送"最后一个字节"时
//UART1_ITConfig(UART1_IT_TXE, DISABLE);//关闭"UART1发送数据寄存器空中断"
//UART1_ITConfig(UART1_IT_TC, ENABLE);//使能"UART1发送完成中断"
}
if(UART1_GetITStatus(UART1_IT_TC) != RESET)//UART1发送完成中断
{
UART1_ITConfig(UART1_IT_TC, DISABLE);//关闭"UART1发送完成中断"
}
}
#pragma vector=0x14
__interrupt void UART1_RX_IRQHandler(void)//UART1接收寄存器满中断
{
u8 RX_temp=0;//必须初始化
(void)RX_temp;//清除"RX_temp" was set but never used的警告
if(UART1_GetITStatus(UART1_IT_RXNE)!=RESET)//UART1接收数据寄存器不为空中断
{
RX_temp=UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
UART1_ClearFlag(UART1_FLAG_RXNE);//清除UART1接收完成标志位
}
if(UART1_GetFlagStatus(UART1_FLAG_PE) != RESET)//奇偶校验错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE,IDLE,RXNE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if( UART1_GetITStatus(UART1_IT_OR) != RESET)//溢出错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
if(UART1_GetFlagStatus(UART1_FLAG_FE) != RESET)//帧错误标志
{
UART1_ReceiveData8();
//接收一个8位数据
//执行UART1_ReceiveData8()或UART1_ReceiveData9()会清除FE,OR,PE位
UART1_ClearITPendingBit(UART1_IT_RXNE);//清除"UART1接收数据寄存器不为空中断标志"
}
}
#endif
#pragma vector=0x15
__interrupt void I2C_IRQHandler(void)//I2C中断
{
}
#ifdef STM8S105
#pragma vector=0x16
__interrupt void UART2_TX_IRQHandler(void)//UART2发送完成中断
{
}
#pragma vector=0x17
__interrupt void UART2_RX_IRQHandler(void)//UART2接收寄存器满中断
{
}
#endif
#if defined(STM8S207) || defined(STM8S208)
#pragma vector=0x16
__interrupt void UART3_TX_IRQHandler(void)//UART3发送完成中断
{
}
#pragma vector=0x17
__interrupt void UART3_RX_IRQHandler(void)//UART3接收寄存器满中断
{
}
#endif
#if defined(STM8S207) || defined(STM8S208)
#pragma vector=0x18
__interrupt void ADC2_IRQHandler(void)//ADC2转换结束中断
{
}
#else
#pragma vector=0x18
__interrupt void ADC1_IRQHandler(void)//ADC1转换结束中断
{
}
#endif
#ifdef STM8S903
#pragma vector=0x19
__interrupt void TIM6_UPD_OVF_TRG_IRQHandler(void)//TTM6更新/上溢出/下溢出/触发/刹车
{
}
#else
#pragma vector=0x19
__interrupt void TIM4_UPD_OVF_IRQHandler(void)//TTM5更新/上溢出/下溢出/触发/刹车
{
}
#endif
#pragma vector=0x1A
__interrupt void EEPROM_EEC_IRQHandler(void)//编程结束/禁止编程
{
}