一知半解学习环境:
1、CubeMX 4.23.0
2、uVision 5.14.2
3、MCU 启明 STM32F407 开发板(高配版) V3.1
一知半解学习目标:
1、掌握CubeMX下RCC以及SYS的相关配置;
2、掌握CubeMX下串口配置;
3、掌握Printf的实现套路;
一知半解实现过程:
1、配置系统调试接口及时基时钟源;
2、配置外部高速时钟源;
3、根据原理图配置对应串口(USART1);
4、配置时钟树;
5、配置串口参数,保持默认参数即可;
6、生成工程,并添加程序;
首先,打开工程,在usart.c文件的最后添加如下程序;
/* USER CODE BEGIN 1 */
#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__ */
PUTCHAR_PROTOTYPE
{
/* Place your implementation of fputc here */
/* 使用的串口可根据实际配置修改 */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
/* USER CODE END 1 */
其次,在main.c循环中添加打印信息;
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(1000);
printf("杭州义益钛迪信息技术有限公司嵌入式部门n");
}
/* USER CODE END 3 */
7、串口调试助手打印验证;
一知半解套路回顾:
1、掌握CubeMX配置的常规套路,如SYS、RCC以及时钟树的配置等;
2、掌握CubeMX串口的配置;
3、学会printf实现需要添加文件的固定套路(以后遇到只需要复制就行);
关键字:CubeMX UART Printf
引用地址:
一知半解学CubeMX——UART:Printf实现
推荐阅读最新更新时间:2024-11-10 21:43
44B0X Uart_Printf()
最近在学习44B0X,在看其串口驱动时发现有个Uart_Printf()函数,深入看之,发现不解,惑也!于是查其资料,转发于下,希对同仁有用。 原形: void Uart_Printf(char *fmt,...) //...表示可变参数(多个可变参数组成一 个列表,后面有专门的指针指向他),不限定个数和类型, { va_list ap;//初始化指向可变参数列表的指针 char string ; va_start(ap,fmt);//将第一个可变参数的地址付给ap,即ap指向可变参数列 表的开始 vsprintf(string,fmt,ap);//将参数fmt、ap指向的可变参数一起转换成格式 化字符串,放string数组中,
[单片机]
使用STM32CubeMX生成初始化代码
我使用STM32CubeMX生成初始化代码,使用LL库,这里只介绍跟i2c相关的部分,其他必要的初始化需要自己完成。芯片使用stm32f042。本文的代码不能到手即用,只提供思路。 1、初始化 初始化部分包括GPIO、DMA、I2C等。 1、GPIO 这部分自动生成就OK,一般不需要作修改; LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA); /**I2C1 GPIO Configuration PA9 ------ I2C1_SCL PA10 ------ I2C
[单片机]
STM32中printf与scanf的重定向问题
关于STM32中 printf 与 scanf 的重定向问题在此我仅对不使用 USE MircoLIB 的情况做整理(针对Keil RVMDK开发环境)。 ① :首先需要在 usart.h 中包含 “stdio.h” 头文件 ② :在 usart.c 中,加入如下代码块,以此避免使用半主机模式,并重定向 printf 和scanf 函数; #if 1 #pragma import (__use_no_semihosting_swi) /*标准库需要的支持函数,use_no_semihosting_swi以避免使用半主机模式*/ struct __FILE { int handle; };
[单片机]
C8051F340串口通信程序(UART0)
UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0 具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率(详见 18.1 增强波特 率发生器 )。接收数据缓冲机制允许 UART0 在软件尚未读取前一个数据字节的情况下开始接 收第二个输入数据字节。 UART0 有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器 (SBUF0)。用同一个 SBUF0 地址可以访问发送寄存器和接收寄存器。写 SBUF0时自动访问 发送寄存器;读 SBUF0时自动访问接收寄存器,不可能从发送数据寄存器中读数据。 如果 UART0 中断被允许,则每次发送完成(SCON0
[单片机]
STM32CubeMX芯片包(固件库)使用注意
1. 解压本地固件库包后需要将文件夹放到指定路径,该指定路径为cubemx软件中的help - updater settings - updater settings - repository folder中的路径,本人的路径为C:/Users/WR/STM32Cube/Repository/。之前没有放到指定路径,因此Generate Code时会提示错误信息。 2. 将固件库放入指定路径后,需要在CubeMX软件中选择它,点击工具栏Project - Settings - Project - Firmware Package Name and Version中选择刚刚放置到指定位置的固件库,本人的固件库为STM32Cube
[单片机]
编程点滴:AVR的UART数据收发测试程序
本程序实现UART中断方式发送和接收数据功能,将接收到的数据立即发出,形成回环。 由测试程序 main.c ,相关头文件 uart_test.h ,UART数据处理程序 uart_test.c 组成。 main.c /* ************************************************ * File name: main.c * Function: AVR的UART数据收发测试程序 * Description: 实现将RXD端口收到的数据转发至TXD端口 * 收发工作由UART中断自动完成 * Author & Date: Joshua Chan, 2012/03/28 * *******
[单片机]
STM8学习笔记---串口printf函数的实现
在使用单片机的时候,串口是要经常使用的功能,特别是在调试代码的过程中,经常需要使用串口打印出某些变量值,来判断程序执行流程是否正常。但是单片机默认情况下没有printf函数,如果需要使用printf函数的功能,就需要自己在串口代码中配置。下面总结一下如何在STM8单片机中使用printf函数功能。 首先按照常规方法先初始化串口 void Uart1_IO_Init( void ) { PD_DDR |= ( 1 5 ); //输出模式 TXD PD_CR1 |= ( 1 5 ); //推挽输出 PD_DDR &= ~( 1 6 ); //输入
[单片机]
STM32中如何使用printf()函数?
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义函数 如下: // 发送数据 int fputc(int ch, FILE *f) { USART_SendData(USA
[单片机]