INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler,25)
{
/* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */if(timeout>0)
{
timeout--;
}
elseif(timeout == 0)
{
Rec_over_flag = 1; //接收完成标志位
lenRcved = length; //实际接收的字节数目
length = 0;
}
TIM4_ClearITPendingBit(TIM4_IT_Update);
}
串口接收中断函数:
INTERRUPT_HANDLER(USART1_RX_TIM5_CC_IRQHandler,28)
{
/* In order to detect unexpected events during development, it is recommended to set a breakpoint on the following instruction. */
timeout = 5;
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
Rec_Block[length]=USART_ReceiveData8(USART1);//接收到的字节放入缓冲曲
length++;//数组索引加1
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志if(length>LEN)
{
length=0;
}
}
}
在中断stm8l15x_it.c文件中声明变量:
#include"stm8l15x_it.h"#include"bsp.h"#define LEN 512uint16_t i=0,length=0,lenRcved=0,timeout;
uint8_t Rec_over_flag;
uint8_t Rec_Block[LEN];