访问手机版页面
你的位置:老古开发网 > STM32单片机 > STM32单片机的USART > 正文  
STM32F0的USART通讯的例子
内容导读:
前言:正文:所有USART设置都设置了1,时钟,enable2,IO配置,AF,PP,3,在while里循环发送0x55我在示波器里头看到了初始都是高电平,然后一低一高一低一高,重复10次,后来孔工给我看手册,告诉我说,串口通信是有

前言:

正文:

所有USART设置都设置了

1,时钟,enable

2,IO配置,AF,PP,

3,在while里循环发送0x55

我在示波器里头看到了初始都是高电平,然后一低一高一低一高,重复10次,后来孔工给我看手册,告诉我说,串口通信是有个起始位是低,有个终值位是高,中间是8个位,如果1就是高,0,就是低,我一看,0x55不是0101 0101吗,后来知道串口通信是低位开始发,所以是10101010,这10位,说的通了

如果示波器都显示出101010时,说明发送是成功的,唯一的错误就要找,TXD是不是和RXD接反了

问题2,使用中断去处理接收的RXD信号时,失败,一直蜂鸣器长响,主要设置原因:

IO口设置,

1,AF推挽,2,PP,3,UP,关键是3,不能是nopull,一定要是UP,所以以后都是UP

// 中断设置

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

// 接收中断

USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除接收中断标志

USART_ITConfig(USART2,USART_IT_RXNE,ENABLE); //接收中断使能

void USART2_IRQHandler(void){

if( USART_GetITStatus( USART2, USART_IT_RXNE ) == SET )

{

LCD_Clear(RED);

LCD_Clear(WHITE);

USART_ReceiveData(USART2);

USART_ClearITPendingBit(USART2,USART_IT_RXNE);// 清除中断标志

}

}


标签: stm32f0,usart通讯,
来源:互联网 作者:karen 时间:2018/11/29 17:00:01
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐