初级会员

- 积分
- 145
- 金钱
- 145
- 注册时间
- 2016-7-4
- 在线时间
- 31 小时
|
5金钱
配置和例程带的串口1思路一样,代码检查的没有问题,难道是开发板串口2被占用了?
基本的发送0x11都收不到,io口一直是高电平
代码如下[mw_shl_code=applescript,true]void usart2_Init(void)
{
GPIO_InitTypeDef GPIO_InitStuer;
USART_InitTypeDef USART_InitStuer;
NVIC_InitTypeDef NVIC_InitStuer;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);
GPIO_InitStuer.GPIO_Mode=GPIO_Mode_AF;
GPIO_InitStuer.GPIO_OType=GPIO_OType_PP;
GPIO_InitStuer.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitStuer.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitStuer.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStuer);
USART_InitStuer.USART_BaudRate=115200;
USART_InitStuer.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStuer.USART_Mode= USART_Mode_Rx | USART_Mode_Tx;
USART_InitStuer.USART_Parity=USART_Parity_No; //ÎTÆæÅ¼D£Ñéλ
USART_InitStuer.USART_StopBits=USART_StopBits_1; //ÎTó2¼tá÷¿ØÖÆ
USART_InitStuer.USART_WordLength=USART_WordLength_8b;
NVIC_InitStuer.NVIC_IRQChannel=USART2_IRQn;
NVIC_InitStuer.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStuer.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStuer.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStuer);
USART_Init(USART2,&USART_InitStuer);
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); //½óêüÖD¶Ï
USART_Cmd(USART2,ENABLE); //ê1Äü′®¿ú2
USART_ClearFlag(USART2, USART_FLAG_TC);
}[/mw_shl_code] |
最佳答案
查看完整内容[请看2#楼]
我也是在串口1例程的基础上改成了串口2出现了问题,现在已经解决了这个问题。
把例程中关于下面这个函数的 USART1 改为 USART2 就可以正常收发了。
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((USART2->SR&0X40)==0);//循环发送,直到发送完毕
USART2->DR = (u8) ch;
return ch;
}
|