中级会员
 
- 积分
- 262
- 金钱
- 262
- 注册时间
- 2016-9-9
- 在线时间
- 94 小时
|
本帖最后由 xmlhttp 于 2016-9-9 12:00 编辑
我用的是stm32F103芯片,想要的效果是用串口助手发个数据给USART3,然后让它把这个数据返回来,下面是代码帮我看看哪里有问题。
初始化:
[mw_shl_code=c,true]void usart_init(){
//声明变量
GPIO_InitTypeDef GPIO_struct;
USART_InitTypeDef USART_struct;
NVIC_InitTypeDef NVIC_struct;
//时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
//串口连接的GPIO设置
GPIO_struct.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_struct.GPIO_Pin=GPIO_Pin_10; //发送
GPIO_struct.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOB,&GPIO_struct);
GPIO_struct.GPIO_Pin=GPIO_Pin_11; //接收
GPIO_struct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB,&GPIO_struct);
//串口设置
USART_struct.USART_BaudRate=9600;
USART_struct.USART_WordLength=USART_WordLength_8b;
USART_struct.USART_StopBits=USART_StopBits_1;
USART_struct.USART_Parity= USART_Parity_No;
USART_struct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_struct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
USART_Init(USART3,&USART_struct);
//串口使能
USART_Cmd(USART3,ENABLE);
USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
USART_ClearFlag(USART3,USART_FLAG_TC);
//中断设置
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_struct.NVIC_IRQChannel=USART3_IRQn;
NVIC_struct.NVIC_IRQChannelPreemptionPriority=0;
NVIC_struct.NVIC_IRQChannelSubPriority=0;
NVIC_struct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_struct);
}
[/mw_shl_code]
中断代码:
[mw_shl_code=c,true]//串口3中断
void USART3_IRQHandler(void){
static u32 k;
USART_ClearFlag(USART3,USART_FLAG_TC);
if(USART_GetITStatus(USART3,USART_IT_RXNE)!=Bit_RESET){
k=USART_ReceiveData(USART3);
USART_SendData(USART3,k);
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==Bit_RESET);
}
}[/mw_shl_code]
测试图片:
|
|