STM32 keil printf的使用

发布者:小九分析仪最新更新时间:2016-09-07 来源: eefocus关键字:STM32  keil  printf 手机看文章 扫描二维码
随时随地手机看文章
请在MDK(keil)工程属性的“Target“-》”Code Generation“中勾

选”Use MicroLIB

 

前提是你有一个完整keil的工程 比如ADC的调试的时候很多时候用到串口 这里教你怎么样使

用Printf 函数

红色字句为重点!!!!!

若使得在程序中使用Printf需做一下几步
1,输入输出文件包含#include
2,在程序下添加宏定义代码

/* Private function prototypes -----------------------------------------------*/

#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__ */
 
   /* Private functions ---------------------------------------------------------*/

3,添加如下2个函数 usart配置 和 重定向 C库的printf函数

 /* System Clocks Configuration */

 

void RCC_Configuration(void)
{    
  /* Enable GPIO clock */
  RCC_APB2PeriphClockCmd(USARTy_GPIO_CLK | USARTz_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);

#ifndef USE_STM3210C_EVAL
  /* Enable USARTy Clock */
  RCC_APB2PeriphClockCmd(USARTy_CLK, ENABLE); 
#else
  /* Enable USARTy Clock */
  RCC_APB1PeriphClockCmd(USARTy_CLK, ENABLE); 
#endif
  /* Enable USARTz Clock */
  RCC_APB1PeriphClockCmd(USARTz_CLK, ENABLE);  
}

/* System Clocks Configuration */

 

/* Configure the GPIO ports */

void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

#ifdef USE_STM3210C_EVAL
  /* Enable the USART3 Pins Software Remapping */
  GPIO_PinRemapConfig(GPIO_PartialRemap_USART3, ENABLE);
  
  /* Enable the USART2 Pins Software Remapping */
  GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);  
#elif defined(USE_STM3210B_EVAL) || defined(USE_STM32100B_EVAL)
  /* Enable the USART2 Pins Software Remapping */
  GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
#endif

  /* Configure USARTy Rx as input floating */
  GPIO_InitStructure.GPIO_Pin = USARTy_RxPin;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);
  
  /* Configure USARTz Rx as input floating */
  GPIO_InitStructure.GPIO_Pin = USARTz_RxPin;
  GPIO_Init(USARTz_GPIO, &GPIO_InitStructure);  
  
  /* Configure USARTy Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = USARTy_TxPin;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);

  /* Configure USARTz Tx as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = USARTz_TxPin;
  GPIO_Init(USARTz_GPIO, &GPIO_InitStructure); 
}

/* Configure the GPIO ports */

 

/* USARTy configuration ------------------------------------------------------*/

void USART_Configuration()
{

USART_InitTypeDef USART_InitStructure;
 USART_InitStructure.USART_BaudRate = 230400;
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  USART_InitStructure.USART_StopBits = USART_StopBits_1;
  USART_InitStructure.USART_Parity = USART_Parity_Even;
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  
  /* Configure USARTy */
  USART_Init(USARTy, &USART_InitStructure);
  /* Configure USARTz */
  USART_Init(USARTz, &USART_InitStructure);

}

/* USARTy configuration ------------------------------------------------------*/

 

/*  Retargets the C library printf function to the USART.  */
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (uint8_t) ch);


while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}

return ch;
}

/*  Retargets the C library printf function to the USART.  */

3,然后就可以在main()调用

printf("The is a example!" );

printf("%s%c%c%c%c%c%s",
           "#**",
           Value/256,Value%6,
          '&',
           Value_2/256,Value_2%6,
          "**%");

之类的输出函数

关键字:STM32  keil  printf 引用地址:STM32 keil printf的使用

上一篇:STM32 EXTI的配置
下一篇:ARM电子束焊机灯丝电源设计方案

推荐阅读最新更新时间:2024-03-16 15:08

TLI4970 电流计 stm32驱动
1、软硬件:TLI4970、STM32F4;CUBEMX5251、KeilMDK5 stm32通过SPI总线读取TLI4970的电流数据。驱动还在测试中,有个问题待解决,测试通过再写,先标记一下。 问题波形 :黄色-CLK;蓝色-MISO MISO明显被时钟线CLK干扰了,原因是MCU和TLI之间采用了较长的并排杜邦线连接。
[单片机]
TLI4970 电流计 <font color='red'>stm32</font>驱动
驱动字库芯片GT23L24M0140
环境: 主机:WIN8 开发环境:MDK5.13 mcu: stm32f407VGIGH6 字库芯片:GT23L24M0140 说明: GT23L24M0140是一款支持GB18030标准的字库芯片,有多种大小的字体可供选择。 本文驱动了其中常用的字体。 源代码: drv_font.h /********************************************************************* * 字库芯片驱动层头文件 * (c)copyright 2013,jdh * All Right Reserved *新建日期:2015/2/2 by
[单片机]
验证STM32是小端存储
最近写STM32程序,用到了共用体,由此,引发了疑问。 比如:将0x12345678存储到一个U32类型的变量里面。大端和小端分别是这样存储的。 大端存储: 低地址 …… 高地址 0x 12 34 56 78 小端存储: 低地址 …… 高地址 0x 78 56 34 121234567 看代码 `#include “stm32f10x.h” struct s { u32 a; u8 b; }; union B { u8 c ; struct s s_1; }; union B BB; int main(void) { BB.s_1.a=0x1
[单片机]
如何在vscode上面开发stm32
vscode具有强大的代码编辑功能,自动补全代码,高亮代码看起来非常舒服,而 Keil 虽然也很强大,但是代码补全没有vsCode用起来舒服,如果能在vscode上面开发 stm32 将会非常舒适。两者界面对比图 现在有一款插件可以满足以上需求--keilAssistant 1.安装插件。搜索keilAssistant,安装 2.在扩展配置里面修改keil路径(也就是keil安装路径里面的UV4.exe) 3.编译工程 编译成功,也可以烧写程序。 注意:1如果编译显示如图 是kei路径写错了,一定要把exe文件写上,下图是写好的路径,每个人安装路径不同。
[单片机]
如何在vscode上面开发<font color='red'>stm32</font>
STM32 SPI接口的简单实现
通常SPI通过4个引脚与外部器件相连: ● MISO:主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。 ● MOSI:主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。 ● SCK:串口时钟,作为主设备的输出,从设备的输入 ●NSS:从设备选择。这是一个可选的引脚,用来选择主/从设备。它的功能是用来作为“片选引脚”,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。从设备的NSS引脚可以由主设备的一个标准I/O引脚来驱动。一旦被使能(SSOE位),NSS引脚也可以作为输出引脚,并在SPI处于主模式时拉低;此时,所有的SPI设备,如果它们的NSS引脚连接到主设备
[单片机]
<font color='red'>STM32</font> SPI接口的简单实现
浅谈STM32_RTC闹钟
今天讲解“STM32F103RTC闹钟”,说起“闹钟”大家肯定不会陌生,基本上我们每天都在接触。今天说的“RTC闹钟”就是我们现实生活中的闹钟,只是今天站在技术知识的角度来看待“闹钟”。由于这一阶段定位的是基础的知识,所以今天提供的软件例程也是相对简单一点的,但明白今天的知识,相信自己都会写闹钟程序了,后期我会更新日历及闹钟的综合知识。 每天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。 今天的软件工程下载地址(360云盘): https://yunpan.cn/cSsN8ExwLMBbj访问密码 529c STM32F10x的资料可以在我360云盘下载: https://yunpan
[单片机]
浅谈STM32_RTC闹钟
stm32 FSMC-外扩SRAM IS62WV51216
引脚定义 FSMC配置步骤 1.使能对应引脚GPIO时钟 2.配置GPIO引脚模式 3.使能FSMC时钟 4.FSMC初始化 5.存储器块使能 举例 #define Bank1_SRAM3_ADDR ((u32)(0x68000000)) //首地址0x60000000,每块0x40000000 void SRAM_gpio_init() { GPIO_InitTypeDef gpiof = { GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_12 | GPI
[单片机]
STM32的数据类型基础介绍
首先说一下编程过程中几个步骤吧 第一,选择一门语言,C语言或汇编语言,嵌入式编程一般目前流行还是C,这个需要基础与时间 第二读懂了解 MCU的寄存器各寄存器的功能,尤其是一些IO口设置,各模块时钟设置比如定时器,I2C,同步异步串口,PWM等等,以前的话51的话没有这样设置。而现在MCU基本上各模块时钟都分开了。这个可以看官方数据说明书就可以了。 其实程的目的就是设置一系列寄存器.并根据你设计程序流程去执行它,期间可能加入了你设计好的一些算法,和数学公式。进行计算,或执行。 第三,你有一块你的实验板就如这次STM32推的F429,你还需要下载程序的编程器。就是把编译器编译好的代码下载到你的目标实验板上,不过ST推的多数
[单片机]
<font color='red'>STM32</font>的数据类型基础介绍
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved