OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3799|回复: 3

Printf 函数,请解惑

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-10-2
在线时间
0 小时
发表于 2013-10-2 13:33:28 | 显示全部楼层 |阅读模式
刚接触STM32,各位大侠,作为初学者有个小疑问求解,不要见怪,,,,

在《原子教你玩STM32》视频第三讲中,  原子用Printf 函数输出了GPIO各个寄存器的地址。

我的疑问是:1. 调用这个函数用什么 不用include "stdio.h"头文件。
                  2. 这个函数是怎么实现的,为什么可以从串口输出,为什么 无法使用GO to Definition of "Printf" 来查看定义
                  3. 例程中讲解的GPIO初始函数GPIO_Init(),为了清楚该函数的具体操作,我在stm32f10x_gpio.c , GPIO_Init()的定义处加了一行Printf,,编译通过,但为什么串口没输出了呢,好像停在了这一行。如果注释掉是可以的。如下:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00;
  uint32_t tmpreg = 0x00, pinmask = 0x00;
  /* Check the parameters */
   assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode));
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));  
  
/*---------------------------- GPIO Mode Configuration -----------------------*/
  currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F);
  
 
  if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) != 0x00)
  { 
    /* Check the parameters */
    assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed));
    /* Output mode */
    currentmode |= (uint32_t)GPIO_InitStruct->GPIO_Speed;
printf("the value of currentmode=%x\n",currentmode);
  }




请不吝赐教!!

When the world turns its back on you, you turn your back on the world!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

56

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
376
金钱
376
注册时间
2013-4-25
在线时间
0 小时
发表于 2013-10-2 17:54:43 | 显示全部楼层
虽然不能完全回答你的问题,但是我把我知道的写在这供你参考,
1,stdio.h其实是有的,你翻开实验四串口实验例程在左边工程管理窗口把main.c展开会发现
2,printf函数的实现应该就是在上述stdio.h对应的源文件里面
3,不会
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
26
金钱
26
注册时间
2013-10-2
在线时间
0 小时
 楼主| 发表于 2013-10-2 19:39:31 | 显示全部楼层
谢谢你的回复!
原子大咖呢,求解第三问
When the world turns its back on you, you turn your back on the world!
回复 支持 反对

使用道具 举报

2

主题

1446

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2256
金钱
2256
注册时间
2010-12-16
在线时间
206 小时
发表于 2013-10-2 22:37:00 | 显示全部楼层
如果没有初始化串口,fputc使用阻塞代码且没有超时机制,就会停在等待上一个字节发完的状态,因为上一个字节无法发送.
技术讨论请发帖 , 需要我回复请点左下的 < 回复 > 让系统通知我 . 本人不通过其他方式返回任何参数.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-12 13:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表