你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
查看全部评分
oktigerxia 发表于 2016-12-7 14:55 USART_Cmd(USART2, ENABLE);串口2使能没
斜阳__ 发表于 2016-12-7 09:17 首先看进接收中断了么?如果没进,看串口配置哪里出错了;如果进了,好好捋一下中断内的处理过程 ...
高二毛 发表于 2016-12-7 08:55 结合提供的例子好好研究研究。串口还是最简单的。
评分
查看全部评分
评分
查看全部评分
USART_Cmd(USART2, ENABLE);串口2使能没
{
GPIO_InitTypeDef GPIO_InitStructure;
/*使能USART1时钟*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
/* Configure USART2 Rx (PA.3) as input floating */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* Configure USART2 Tx (PA.02) as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*设置USART1波特率为115200*/
USART_Baud_Rate(USART2,38400);
/* Enable USART2 Receive and Transmit interrupts */
USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
/* Enable the USART2 */
USART_Cmd(USART2, ENABLE);
USART_ClearFlag(USART2, USART_FLAG_TC);
USART_ClearFlag(USART2,USART_IT_RXNE); //先清标志,否则第一个数据有可能出错
}
void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
{
OEMVSTATIC.Buf[OEMVSTATIC.In++] = USART_ReceiveData(USART2);
OEMVSTATIC.Count++;
if(OEMVSTATIC.In >= OEMVSTATIC_Buf_Size)OEMVSTATIC.In = 0;
if(OEMVSTATIC.Count >= OEMVSTATIC_Buf_Size)
{
OEMVSTATIC.Count = 0;
OEMVSTATIC.In = 0;
}
OEMVSTATICDatTimeOut = 0;
USART_ClearFlag(USART2, USART_FLAG_RXNE);
}
}
参考下
评分
查看全部评分
使能了 这个问题是解决了 但是我又发现了个问题 就是我换了个串口又不能实现了
现在的问题是我 从新换了串口又实现不了了配置也是对的啊
现在的问题是我 从新换了串口又实现不了了配置也是对的啊
使能了。现在的问题是我 从新换了串口又实现不了了配置也是对的啊