OpenEdv-开源电子网

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

printf()求助

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
发表于 2013-12-16 08:32:57 | 显示全部楼层 |阅读模式
小弟用一下代码输出printf()不知为什么不能输出\n请高手不吝赐教,谢谢。(没有添加原子哥的usart.c)

#include "stm32f10x.h"
#include "stdio.h"
//ALIENTEK战舰STM32开发板实验0
//固件库V3.5工程模板 
//官方技术支持论坛:www.openedv.com
//广州市星翼电子科技有限公司 //
void RCC_Configuration(void)  ;
//char Uart_char[]="I'm duzailian.";
void GPIO_Configuration(void) ;
void uart_init(u32 BaudRate)
{
USART_InitTypeDef USART_InitStructure;  
/* The following example illustrates how to configure the USART1 */ 
USART_InitStructure.USART_BaudRate = BaudRate; 
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_Tx | USART_Mode_Rx;  
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);

}
  
//void Uart_bit(char *p)
//{
// USART_SendData(USART1, *p);
//}
//void Uart_byte(char a[])
//{
// int i;
// for(i=0;a!='\0';i++)
// {
// Uart_bit(a+i);
// // USART_SendData(USART3, 'a');
// while(!USART_GetFlagStatus(USART1,USART_FLAG_TC ) ) ;  
// }
//}    
/*******************************************************************************
* Function Name : fputc
* Description   : 重定向这个C库(stdio)printf函数  文件流——》串口USART1
* Input         : ch,*f
* Output         : None
* Return         : None
*******************************************************************************/
#if 1
#pragma import(__use_no_semihosting)             
//标准库需要的支持函数                 
struct __FILE 
int handle; 

}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
_sys_exit(int x) 
x = x; 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{      
while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
    USART1->DR = (u8) ch;      
return ch;
}
#endif    
 int main(void)
 {
u8 i;
  RCC_Configuration();
GPIO_Configuration();
uart_init(9600);
for(i=0;i<=11;i++)
printf("\n")  ;
printf("The ID of the STM32 is:\n%x\n",*(u8*)(0X1FFFF7E8+i));
// while(1)
// Uart_byte(Uart_char);
// Uart_byte();
 //  return 0;
 }
 void RCC_Configuration(void)
{
//----------使用外部RC晶振-----------
RCC_DeInit(); //初始化为缺省值
RCC_HSEConfig(RCC_HSE_ON); //使能外部的高速时钟 
while(RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET); //等待外部高速时钟使能就绪
//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //Enable Prefetch Buffer
//FLASH_SetLatency(FLASH_Latency_2); //Flash 2 wait state
RCC_HCLKConfig(RCC_SYSCLK_Div1); //HCLK = SYSCLK
RCC_PCLK2Config(RCC_HCLK_Div1); //PCLK2 =  HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK1 = HCLK/2
RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); //PLLCLK = 8MHZ * 9 =72MHZ
RCC_PLLCmd(ENABLE); //Enable PLLCLK

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //Wait till PLLCLK is ready
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //Select PLL as system clock
while(RCC_GetSYSCLKSource()!=0x08); //Wait till PLL is used as system clock source
//---------打开相应外设时钟--------------------
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能APB2外设的GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能APB2外设的GPIOC的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
//GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);  
 
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* Configure USARTx_Tx 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 USARTx_Rx as input floating */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-16 23:03:14 | 显示全部楼层
这printf用的是标准库代码,所以printf是没问题才对.
你的软件不支持这种换行吧.
试试\r\n.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
 楼主| 发表于 2013-12-17 08:09:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
不会吧?用光盘里您开发的程序就没问题啊。
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
 楼主| 发表于 2013-12-17 08:15:36 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
用\r\n确实可以了,谢原子老师不辞辛苦地赐教。
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
 楼主| 发表于 2013-12-17 09:57:22 | 显示全部楼层
int main(void)
 {
u8 i;
  RCC_Configuration();
GPIO_Configuration();
uart_init(9600);
printf("\r\nThe ID of the STM32 is:\r\n");
for(i=0;i<12;i++)
printf("%x",*(u8*)(0X1FFFF7E9+i));
printf("\r\n");
 }
我想自己动手,所以没用您的usart.c文件,请问原子老师这程序为什么只输出了11个字节呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-17 20:33:50 | 显示全部楼层
回复【5楼】duzailian:
---------------------------------
只输出11字节?还是11次?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
 楼主| 发表于 2013-12-17 22:52:14 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
11个字节
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-12-17 23:08:11 | 显示全部楼层
回复【7楼】duzailian:
---------------------------------
你觉得应该输出多少个字节?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-9-28
在线时间
0 小时
 楼主| 发表于 2013-12-17 23:12:25 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
找到问题了,确实是12个字节,但是我的ID里如果前半字节是0,则不能输出。谢谢老师。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 03:56

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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