|
使用stm32f030c8t6,只要串口2接收到数据就马上跳转到HardFault_Handler,
请大家帮忙看看是怎么回事,以下是初始化代码。
- void USART2_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- USART_InitTypeDef USART_InitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
-
- RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA, ENABLE);
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE );
-
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_1);
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOA, &GPIO_InitStructure);
-
- USART_InitStructure.USART_BaudRate = 9600;//设置串口波特率
- USART_InitStructure.USART_WordLength = USART_WordLength_8b;//设置数据位
- USART_InitStructure.USART_StopBits = USART_StopBits_1;//设置停止位
- USART_InitStructure.USART_Parity = USART_Parity_No;//设置效验位
- USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//设置流控制
- USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//设置工作模式
- USART_Init(USART2, &USART_InitStructure); //配置入结构体
-
- NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;//设置中断
- NVIC_InitStructure.NVIC_IRQChannelPriority=0;//设置优先级
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能
- NVIC_Init(&NVIC_InitStructure);
- USART_ClearITPendingBit(USART2,USART_IT_RXNE) ; //清除接收中断标志
- USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//接收中断使能
-
- USART_Cmd(USART2, ENABLE);//使能串口2
-
- }
复制代码 |
|