stm8s用的不多,感觉踩坑了!!!!
在stm8s207的串口初始化中,配置接收中断,是这样 UART1_ITConfig(UART1_IT_RXNE, ENABLE);
但是运行后,就进入到了断言中断中去了,因为开启了断言 #define USE_FULL_ASSERT (1)
后来发现在中断配置函数中有对中断环境的断言判断 assert_param(IS_UART1_CONFIG_IT_OK(UART1_IT));
跟进去后发现
#define IS_UART1_CONFIG_IT_OK(Interrupt)
(((Interrupt) == UART1_IT_PE) ||
((Interrupt) == UART1_IT_TXE) ||
((Interrupt) == UART1_IT_TC) ||
((Interrupt) == UART1_IT_RXNE_OR ) ||
((Interrupt) == UART1_IT_IDLE) ||
((Interrupt) == UART1_IT_LBDF))
这段代码中,并没有 对UART1_IT_RXNE的判断??????
这是为什么了,难道配置接收中断,必须是配置UART1_IT_RXNE_OR 这个吗?
实际操作确实是用 UART1_ITConfig(UART1_IT_RXNE_OR , ENABLE); 这个函数可以正常。但是我看好多开发版的教程都是 UART1_IT_RXNE的。
老司机来说说看,还是有什么坑在这里?
下附上串口1的初始化函数
void uart1_init(void)
{
UART1_DeInit();//uart1寄存器复位
//工作方式配置
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1,
UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_ITConfig(UART1_IT_RXNE, ENABLE);//中断配置
UART1_Cmd(ENABLE);//开启串口1
}
一周热门 更多>