STM32CubeMX:UART操作

发布者:ww313618最新更新时间:2020-07-19 来源: eefocus关键字:STM32CubeMX  UART操  中断方式 手机看文章 扫描二维码
随时随地手机看文章

UART共有三种操作方式,轮询方式、中断方式以及DMA方式。


芯片:STM32F103C8T6


应用管脚:


输出:PA0、PA1


USART1


配置界面

添加中断配置

添加DMA配置

代码应用


1.实现printf函数


/* USER CODE BEGIN 0 */

#ifdef __GNUC__

/* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf

   set to 'Yes') calls __io_putchar() */

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif /* __GNUC__ */

/* USER CODE END 0 */



/* USER CODE BEGIN 4 */

/**

  * @brief  Retargets the C library printf function to the USART.

  * @param  None

  * @retval None

  */

PUTCHAR_PROTOTYPE

{

  /* Place your implementation of fputc here */

  /* e.g. write a character to the USART1 and Loop until the end of transmission */

  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

  return ch;

}

/* USER CODE END 4 */

2.轮询方式发送与接收


发送数据


uint8_t senddata[20]="This use Transmit.rn";  

if(HAL_UART_Transmit(&huart1,senddata,sizeof(senddata),0xFFFF) != HAL_OK)

  {

    /* Transfer error in reception process */

    Error_Handler();

  }

轮询接收采用阻塞式超时接收模式


  uint8_t huart1_RxBuffer[20];

  HAL_UART_Receive(&huart1, huart1_RxBuffer, 20,0x10);

3.中断方式发送与接收

增加接收中断回调函数


/* USER CODE BEGIN 4 */

/**

  * @brief  Rx Transfer completed callbacks.

  * @param  huart: Pointer to a UART_HandleTypeDef structure that contains

  *                the configuration information for the specified UART module.

  * @retval None

  */

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)

{

if(huart==&huart1)

{

Rx_flag=1;

HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,(GPIO_PinState)!HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0));

// if(HAL_UART_Receive_IT(&huart1, (uint8_t *)huart1_RxBuffer, Rx_size) != HAL_OK)

// {

// /* Transfer error in reception process */

// Error_Handler();

// }

}

}

 

/* USER CODE END 4 */

发送数据

uint8_t senddata_IT[23]="This use Transmit IT.rn";

if(HAL_UART_Transmit_IT(&huart1,senddata_IT, sizeof(senddata_IT)) != HAL_OK)

{

/* Transfer error in reception process */

Error_Handler();

}

接收数据,调用此函数后,接收中断可执行一次。

uint8_t huart1_RxBuffer[20];	

if(HAL_UART_Transmit_DMA(&huart1,senddata_DMA, sizeof(senddata_DMA))!= HAL_OK)

{

Error_Handler();

}


if(HAL_UART_Receive_IT(&huart1, (uint8_t *)huart1_RxBuffer, Rx_size) != HAL_OK) {/* Transfer error in reception process */ Error_Handler(); }

3.DMA方式发送与接收

增加接收中断回调函数(与中断方式相同)


发送数据


uint8_t senddata_DMA[24]="This use Transmit DMA.rn";

if(HAL_UART_Receive_DMA(&huart1, (uint8_t *)huart1_RxBuffer, Rx_size) != HAL_OK)

  {

    /* Transfer error in reception process */

    Error_Handler();

  }


接收数据(特征与中断方式相同)

if(HAL_UART_Receive_DMA(&huart1, (uint8_t *)huart1_RxBuffer, Rx_size) != HAL_OK)

  {

    /* Transfer error in reception process */

    Error_Handler();

  }

关键字:STM32CubeMX  UART操  中断方式 引用地址:STM32CubeMX:UART操作

上一篇:基于STM32的HAL库学习(2)UART串口学习
下一篇:STM32使用esp8266和MQTT协议与OneNET平台进行通信

推荐阅读最新更新时间:2024-11-13 11:13

STM32CUBEMX开发GD32F303(7)----配置printf
概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过GD32303C_START开发板内进行验证。 样品申请 https://www.wjx.top/vm/mB2IKus.aspx 硬件准备 这里准备了GD32303C_START开发板进行验证。 printf()函数 printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为: printf(“ 式样化字符串 ”, 参数表 ); 其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以 %“
[单片机]
<font color='red'>STM32CUBEMX</font>开发GD32F303(7)----配置printf
【STM32】HAL库 STM32CubeMX教程五----看门狗
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,窗口看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: STM32CubeMX创建看门狗例程 独立看门狗,靠窗看门狗 工作原理 看门狗 在由单片机
[单片机]
【STM32】HAL库 <font color='red'>STM32CubeMX</font>教程五----看门狗
【STM32】HAL库 STM32CubeMX教程十二---IIC(读取AT24C02 )
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 在之前的标准库中,STM32的硬件IIC非常复杂,更重要的是它并不稳定,所以都不推荐使用。 但是在我们的HAL库中,对硬件IIC做了全新的优化,使得之前软件IIC几百行代码,在HAL库中,只需要寥寥几行就可以完成 那么这篇文章将带你去感受下它的优异之处 这可能是目前关于STM32CubeMX的硬件iic 讲的最全面和详细的一篇文章之一了 所用工具: 1、芯片: STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 5、II
[单片机]
【STM32】HAL库 <font color='red'>STM32CubeMX</font>教程十二---IIC(读取AT24C02 )
STM32CUBEMX开发GD32F303(15)----外部中断EXTI
概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中进行开发,同时通过开发板内进行验证。 使用外部中断EXTI进行驱动LED。 最近在弄ST和GD的课程,需要GD样片的可以加群申请:615061293 。 视频教学 https://www.bilibili.com/video/BV1Ld4y1i7pF/ csdn课程 课程更加详细。 https://download.csdn.net/course/detail/37152 生成例程 这里准备了自己绘制的开发板进行验证。 查看原理图,PB14为按键管脚。 LED管脚为PB7. 配置时钟树 配置时钟为64M。 中断口配置 G
[单片机]
<font color='red'>STM32CUBEMX</font>开发GD32F303(15)----外部<font color='red'>中断</font>EXTI
STM8S003F使用IO口模拟串口(三)使用中断方式发送和接收数据
在前两篇文章中我们介绍了IO口模拟串口发送数据和接收数据,前两种方法都是使用定时器来进行发送和接收,没有用到中断,优点是逻辑简单,但是缺点很明显,只能进行单个字节的发送和接收,而且不能同时工作。因此在实际工程中没有什么作用,仅供学习使用。使用中断方式我们可以发送和接收多个字节的数据。 1、使用中断方式进行IO口模拟串口发送和接收数据的原理 这篇文章我将使用中断的方式进行发送和接收,同样的,由于原理缺陷,这篇文章介绍的方法无法同时接收和发送,而且由于发送会延时,是一个不太好的方法,仅供学习使用。 注意:这篇文章实现的IO口模拟串口无法同时接收和发送数据!如有需要在实际项目中使用IO口模拟串口工作,请移步: 1.1、发送数据的
[单片机]
STM32CubeMX串口配置及库printf打印
最新版STM32CubeMXV5.0.0已经上传到了网盘,或者自己通过软件在线升级。 STM32CubeMX运行环境搭建包含两个部分。首先是 Java运行环境安装,其次是STM32CubeMX软件安装。Java 软件和STM32CubeMX 软件都可以在官网找到最新的下载。 1. Java运行环境,大家可以到 Java 官网 www.java.com下载最新的 Java 软件; 2.STM32CubeMX可以在ST官网www.st.com/content/st_com/zh.html下载最新的版本; 3.或者在我网盘上下载全部所需软件资料,链接:https://pan.baidu.com/s/1kWUH08n 密码:
[单片机]
<font color='red'>STM32CubeMX</font>串口配置及库printf打印
STM32CUBEMX开发GD32F303(1)----前期准备与烧录
概述 在这使用STM32CUBEMX进行配置STM32F103,移植到兆易创新GD32F303,然后进行测试。 芯片申请 芯片和开发板都可免费申请,暂时只能以公司名义免费申请,填下下面表格即可 https://www.wjx.top/vm/wFGhGPF.aspx pack包 GD32f303的pack包下载链接如下: https://www.keil.com/dd2/pack/#/eula-container 调试软件 J-Link下载,选择自己适合的版本进行下载。 https://www.segger.com/downloads/jlink/ 开发板资料下载 开发板资料可以上兆易创新进行下载。 http://www.gd
[单片机]
<font color='red'>STM32CUBEMX</font>开发GD32F303(1)----前期准备与烧录
STM32CUBEMX开发GD32F303读保护与写保护概述
概述 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。 软件进入读保护 芯片读保护以后,flash将不可以从外部读取,这样可以防止别人读取或者盗取芯片代码,如果想再次烧录代码,需要解除保护,有时候在代码调试的过程中,也有可能会触发读保护,解除读保护也可以使用代码,也可以使用软件进行读保护解锁。 软件进入读保护 打开GD-Link Programmer,点击Target- Security可以进入读保护模式。 这时候会提示是否进入读保护。 进入读保护
[单片机]
<font color='red'>STM32CUBEMX</font>开发GD32F303读保护与写保护概述
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved