STM32CubeMX实现串口打印hello world

news/2024/6/3 18:48:40 标签: stm32, 单片机, arm

环境
硬件:stm32f103c8t6 核心板(usb tx接核心板A10,Rx接A09)
软件:STM32CubeMX
软件:keil5 mdk
cubeMX配置:

晶振配置在这里插入图片描述
时钟配置(根据自己板子上的晶振频率酌情设置)注: HSE:外部高速晶振 LSE:外部低速晶振
在这里插入图片描述
使能USART1 全局中断

点击 GENERATE CODE 生成代码。然后打开工程

在keil5 mdk:
在文件stm32f1xx_hal_uart.h开头添加代码

/* External variables --------------------------------------------------------*/
extern UART_HandleTypeDef huart1; //声明串口
/* USER CODE BEGIN EV */

在文件 main.c中的while循环里添加代码
/* USER CODE BEGIN PV /
uint8_t TxBuffer[] = “hello windows!”;
/
USER CODE END PV */

while (1)
  {
   		HAL_UART_Transmit_IT(&huart1, TxBuffer, sizeof(TxBuffer));
		 HAL_Delay(1000);  //延时1s
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    if(huart->Instance == USART1)
    {
		HAL_UART_Transmit_IT(&huart1,(uint8_t *)RxBuffer,10);
		HAL_UART_Receive_IT(&huart1,(uint8_t *)RxBuffer,10);
    }
}

编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据
在这里插入图片描述
在增加新功能:实现板载led亮,要在cubeMX配置GPIO

UART函数库

HAL_UART_Transmit():串口发送数据,使用超时管理机制
HAL_UART_Receive():串口接收数据,使用超时管理机制
HAL_UART_Transmit_IT():串口中断模式发送
HAL_UART_Receive_IT():串口中断模式接收
HAL_UART_Transmit_DMA():串口DMA模式发送
HAL_UART_Transmit_DMA():串口DMA模式接收

printf重定向办法:

#include "stdio.h"
printf("freeRTOS test\r\n");
int fputc(int ch, FILE *f){
	HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
	return ch;
}
int fgetc(FILE *f){
	uint8_t ch;
	HAL_UART_Receive(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
	return ch;
}

http://www.niftyadmin.cn/n/1160040.html

相关文章

老是出现dispolse 找不到合适的方法来重写

复制到输出目录:不复制 生成操作:编译转载于:https://www.cnblogs.com/laogao/p/3265677.html

nbiot mqtt调试-onenet注册BC20

1.AT指令获取BC20的IMSI和IMEI ATCIMI 查询IMSI 460081852805488 ATCGSN1 查询IMEI 862177045299172 ATCSQ 查询NB信号强度 24,0,信号质量(0~31),确保信号质量大于 3,否则数据通信可能不稳定。 ATCGATT? 测试是否附着网…

InstallShield Basic MSI工程常见问题解答[转]

1、 问题描述:采用何种安装模式?实现方法:如果对用户界面等自定义要求不高的话,建议用Basic Msi Project,否则用InstallScript MSI Project。 2、 问题描述:安装后快捷方式为乱码。实现方法:将…

win10提示“没有打开该文件的权限,请与文件所有者或管理员联系以获得相应权限”

截图快捷键WinShiftS 因为我用的是本地账户,故需要增加本地账户获取全部权限。步骤如下: 高级 更改 高级

页面添加数据方法

/* * 添加一条数据方法 */ public void AddEtlExtractPositionInfo() { int code Integer.parseInt(get("code").toString()); this.getmenu(code, this.getRequest()); Etlextractposition ep new Etlextractposition(); // this.copyPropertiesToBean(ep); // St…

windows家庭版本使用远程桌面

windows家庭版是不支持远程桌面的,开源软件RDP Wrapper可以帮助家庭版也支持远程桌面的功能。Github项目地址 安装步骤: 1.右键管理员运行install.bat 2.右键管理员运行RDPConf.exe。 问题解决: 1.service state如出现stop,在powe…

KMP 算法学习

KMP算法是用来做字符串匹配的。关于字符串匹配,最简单最容易想到的方法是暴利查找,使用双重for循环处理。 该方法的时间复杂度为O((n-m1)*m) (n为目标串T长度,m为模式串P长度, 从T中寻找是否有P…

配置vscode作为STM32代码的编辑器(替代keil5)。实现:代码自动补全, 编译,下载。nRF52也可以编译。

STM32CubeMX新建好工程在工程根目录新建文件夹 .vscode在.vscode 文件夹内新建文件c_cpp_properties.json {"configurations": [{"name": "STM32", //任意的名字。改名字是为了辨别当前的配置信息。"includePath": [ "${workspa…