STM32F0的USART通讯的例子
扫描二维码
随时随地手机看文章
前言:
正文:
所有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);// 清除中断标志
}
}