OpenEdv-开源电子网

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

无法在软件调试上通过串口打印出A

[复制链接]

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
发表于 2016-8-27 22:07:43 | 显示全部楼层 |阅读模式
5金钱

代码如下:
#include "stm32f10x.h "
#include "urst.h"
int  main()
{  
  u16    DIV_Mantissa,DIV_Fraction;
  u32    Bound=9600;
  float  DIV;
   GPIO_Configure();                               //使能GPIO和USART 配置复用为USART
   USART1->CR1 |=  (1<<13);                        //使能UE
   USART1->CR1 &= ~(1<<12);                        //定义字长为8
   USART1->CR2 &= ~(3<<12);                        //设置停止位1位
       
                                                   //求解波特率
   DIV   = (float)(72*1000*1000)/(Bound*16);
   DIV_Mantissa = DIV;
   DIV_Fraction = (DIV-DIV_Mantissa)*16;
   USART1->BRR  = (DIV_Mantissa<<4)|DIV_Fraction;
                                                   //求解波特率
       
   USART1->CR1 |=  (1<<3);                         //使能TE
   USART1->DR = 'A';                               //向DR送入A
   return 0;
}

//下面这个函数在usrt.c里面//
void GPIO_Configure(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|          \
                             RCC_APB2Periph_GPIOA , ENABLE);
  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);
  GPIO_InitStructure.GPIO_Pin     = GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Mode    = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA , &GPIO_InitStructure);
}


问题如下:下面红色圆圈配置应该表明是对的,但是在单步调试时下面没A的出现?这是为什么?
@@$V%(QCH8MV~0@N]EJ$}B6.png

最佳答案

查看完整内容[请看2#楼]

return 0; 改为while(1);
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-8-27 22:07:44 | 显示全部楼层
  return 0; 改为while(1);
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11539
金钱
11539
注册时间
2014-4-1
在线时间
1314 小时
发表于 2016-8-27 22:34:09 | 显示全部楼层

串口助手有个选项,去掉“16进制”前面的勾。


回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2016-8-27 22:50:50 | 显示全部楼层
xuande 发表于 2016-8-27 22:34
串口助手有个选项,去掉“16进制”前面的勾。

没用串口助手
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2016-8-27 22:51:03 | 显示全部楼层
xuande 发表于 2016-8-27 22:34
串口助手有个选项,去掉“16进制”前面的勾。

就是一个软件调试
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2016-8-30 21:30:58 | 显示全部楼层
正点原子 发表于 2016-8-27 22:07
return 0; 改为while(1);

我调试时到return 0 后程序就跳到那个system里的支持printf程序的位置,当我把这个usart.c移除掉后,程序就对了,用printf是不是总会出现一些莫名其妙的问题?
回复

使用道具 举报

106

主题

418

帖子

0

精华

高级会员

Rank: 4

积分
764
金钱
764
注册时间
2016-7-26
在线时间
123 小时
 楼主| 发表于 2016-8-30 21:38:51 | 显示全部楼层
正点原子 发表于 2016-8-27 22:07
return 0; 改为while(1);

原子哥,还有就是当我全速运行程序时它会不断地出现AAAA...........,这是什么问题?这几天调试出现的这种情况,正好把return 0; 改为while(1),把usart.c文件移除掉也可以;但是问题出在哪,能否大概的说一下。先谢谢了!!!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 06:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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