标签:10 HAL UART huart1 STM32 串口 buf
1、通过STM32CubeMX配置串口。
串口1选择Asynchronous,异步通信。
115200bps,8N1,默认即可。
2、串口发送数据。
STM32Cube生成代码后,在main.c的while(1)前面加一句。
HAL_UART_Transmit(&huart1, "Hello world!\r\n", 14, 10);
HAL_UART_Transmit()是串口发送函数,
第一个参数是串口号,&huart1.
第二个参数是要发送的数组,"Hello world!\r\n",字符串可以理解成是字符数组。
第三个参数是发送数组的长度,14。
第四个参数是超时时间,10。
3、下载程序,查看结果。
4、实现printf函数。
①main.c中添加头文件。
#include "stdio.h"
②添加微库。
魔术棒--Target--勾选Use MicroLIB。
③重写fputc函数。
int fputc(int ch, FILE *f)
{
uint8_t temp[1] = {ch};
HAL_UART_Transmit(&huart1, temp, 1, 2);
return temp[0];
}
④main.c中测试printf函数。
5、串口中断。
使用最简单的方式,接收指定长度。
①main.c中添加一行代码。
HAL_UART_Receive_IT(&huart1, buf, 10);
接收10个字符时,执行串口中断回调函数。
②stm32f1xx_it.c中编写中断回调函数。
uint8_t buf[400] = {0};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1, buf, 10, 1000);
HAL_UART_Receive_IT(&huart1, buf, 10);
}
③下载程序查看结果。
uint8_t buf[400] = {0};
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
HAL_UART_Transmit(&huart1, buf, 10, 1000);
HAL_UART_Receive_IT(&huart1, buf, 10);
}
6、使用MINI开发板下载程序。
标签:10,HAL,UART,huart1,STM32,串口,buf 来源: https://blog.csdn.net/weixin_43006196/article/details/123218687
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。