你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
ç¨åºæªå¾
举报
查看全部评分
哈佛祖安智 发表于 2016-12-6 18:13 赶紧用CUBE库
请叫我小张张 发表于 2016-12-6 18:19 这个CUBE库我没有用过 是不是比标准库要难 啊
评分
查看全部评分
{
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);
}
}
参考下
评分
查看全部评分
//------------------------------------------------------------------
void USART1_IRQHandler(void)
{
if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET) //溢出
{
USART_ClearFlag(USART1, USART_FLAG_ORE); //读SR
USART_ReceiveData(USART1); //读DR
}
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET) //接收完成, 则
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清接收中断标志
//PBout(2) = !PBout(2); //LED灯取反
//..................
}
if(USART_GetITStatus(USART1, USART_IT_TC) != RESET) //发送完成
{
//PBout(2) = !PBout(2);
//...................
}
}
判断接收用这个,看指示灯,接收一次,灯变一下, 你程序那个要进N多次.好象还死在里面
评分
查看全部评分
这个CUBE库我没有用过 是不是比标准库要难 啊
评分
查看全部评分
简单
是否有其它中断在影响了接收?注意优先级的合理安排。
评分
查看全部评分
USART_Cmd(USART1, ENABLE);
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
USART_Cmd(USART2, ENABLE);串口2使能没