中级会员
 
- 积分
- 282
- 金钱
- 282
- 注册时间
- 2015-12-26
- 在线时间
- 56 小时
|
1金钱
我的串口基本配置是这样的:
void My_WIFI_UART2_Init(u32 bound)
{
USART_InitTypeDef USART_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //使能USART2时钟
//USART 初始化设置
USART_InitStructure.USART_BaudRate = bound;//串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
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); //初始化串口4
USART_ClearFlag(USART2, USART_FLAG_RXNE);//防止配置完就进入中断
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接受中断
USART_Cmd(USART2, ENABLE); //使能串口4
}
串口发送函数我是这样写的:
/**************************************
串口发送单个字节
***************************************/
void My_WIFIUART2_SendByte(uint8_t ByteSent)
{
USART_SendData(USART2,ByteSent);
while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)!=SET);//等待发送结束
}
中断函数是这样的:
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET)
{
/*内容*/
现在问题是这样子的,如果我在主循环里不断的通过串口发送数据
while(1)
{
sendTo_server(tmp,0,2);//调用了串口发送函数
//
// BEEP_Voice_Volume(0);
delay_ms(20);
}
同时又通过串口调试助手给单片机发送数据 就会导致单片机重启
如果只进行串口发送数据或者是串口接收数据,是没有问题的
stm32的串口不是说是全双工,异步通讯的吗??
怎么
|
|