最近使用在STM32上使用ucosii的运行多任务时候遇到一个奇怪问题,我用到了4个串口,随着程序增大,出现了上电后不运行的情况,我用一个LED闪烁指示运行,使用STLINK进行debug没有问题,但重新上电运行就不行,硬件复位了也不行,排除了硬件问题、指针跑飞、任务堆栈溢出、卡死在某死循环 等可能性后,怀疑是哪句初始化问题,就屏蔽了所有初始化语句(LED的IO口配置除外),最后定位在一个串口的NVIC初始化语句上。
void open_usart_wireless(u32 bound)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd( RCC_APB1Periph_USART2,ENABLE);
//USART2_TX GPIOA.9
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.9
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);//
//USART2_RX GPIOA.10
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA10
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//