Stm32国信长天嵌入式实训平台(CT117E-M4)串口通信1- 简单的串口收发实验-接收中断-hal库-蓝桥杯嵌入式

      本文章为系列文章,将基于CT117E-M4(国信长天嵌入式实训平台)开发板来进行程序编写,由于使用的hal库,无论你使用的是什么核心的开发板,只要是stm32公司的,本系列文章都通用,只是引脚可能依据芯片的不同而有所变化。

实验目标:

    简单的串口收发实验:单片机能够与电脑进行简单通信,电脑向单片机发送一数据后返回数据。

操作步骤:

观察开发板原理图,我们需要设置PA9和PA10为USART1的收发引脚。

打开CubeMX,选择Connective->USART1,工作模式选择Asynchronous(异步),将BaudRate(波特率)设置为需要的值,这里设置为9600。8位数据位,一位停止位,无校验位。然后点击NVIC Settings勾选Enable。

 注:开启串口后软件会自动配置相应的引脚,但是极少数情况可能没有自动设置PA9和PA10为USART1的收发引脚而是设置的其他引脚,这个时候需要我们到右侧的引脚图手动更改引脚。

生成代码后来到Keil,为了方便后续的操作,首先对printf进行重定向:

int fputc(int ch, FILE *f)
 
{
 
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
 
  return ch;
 
}
//如果FILE报错请引用stdio.h

下一步开启接收中断,在进入循环之前:

 然后在stm32g4xx_hal_uart.c当中找到接收中断回调函数HAL_UART_RxCpltCallback,触发接收中断之后自动进入此函数内。找到回调函数后会发现这里是弱定义,可以在其他地方声明而不触发重复定义错误。于是我选择在main.c中编写回调函数代码。由于hal库会自动关闭接收中断,我们在最后还需要重新打开接收中断。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart==&huart1)
    {
       printf(&Rxdata);
    }
  HAL_UART_Receive_IT(huart,&Rxdata,1);
}

 下载程序后单片机能够成功的返回电脑发送的数据:

进阶训练:单片机接收不定长数据,并对数据进行处理 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值