简介:6步教你在STM32程序中添加 printf函数
前提是你有一个完整的keil工程 比如ADC的
调试的时候很多时候用到串口 这里教你怎么样使用Printf 函数
在程序中添加Printf
1,
#include 2, /* Private functions ---------------------------------------------------------*/ 下添加 void USART_Configuration(void); #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__ */ 3,添加如下2个函数 usart配置 和 重定向 C库的printf函数 void USART_Configuration() { /* USARTx configured as follow: - BaudRate = 9600 baud - Word Length = 8 Bits - One Stop Bit - No parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Configure USART1 Tx (PA9) as alternate function push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Rx (PA10) as input floating */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); /* Enable USART1 */ USART_Cmd(USART1, ENABLE); } /** * @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 USART */ USART_SendData(USART1, (uint8_t) ch); /* Loop until the end of transmission */ while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} return ch; } 4, void RCC_Configuration(void) 添加 /* Enable GPIOA and USART1 clocks */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE); 5, STM32F10x.CONF.H 去掉/* #include "stm32f10x_usart.h" */ 的注释 6, 在Main()中添加 void USART_Configuration() 然后就可以在main()调用 printf("The is a example!" ); printf("%s%c%c%c%c%c%s", "#**", Value/256,Value%256, '&', Value_2/256,Value_2%256, "**%"); 之类的输出函数
上一篇:STM32外部中断及定时器编程示例
下一篇:关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
设计资源 培训 开发板 精华推荐
- EV-VSWR-SDZ,基于 ADL6010 快速响应、45 dB 范围射频功率检测器的评估套件
- LTC3646HDE-1 24V 输入至 5V 输出、1MHz 频率和 EXTVCC 同步降压转换器的典型应用电路
- 萝丽6通接收器
- AD8531AKSZ-REEL7 单电源直接接入调制解调器的典型应用
- C3001883_CH554G芯片方案验证板
- DM320204,SAML10 Xplained Pro 评估套件
- 具有外部偏置或同步功能的 CS51413 1.5 A、260 kHz 和 520 kHz 低压降压稳压器的典型应用电路
- AD8057AR-EBZ,AD8057ARZ 单高速运算放大器评估板,采用 8 引脚 SOIC 封装
- LT2940CDD 宽输入范围 10W PWM 热源的典型应用电路
- LT8570EDD-1 1.5MHz、5V 至 12V 升压转换器的典型应用