6309|2

25

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32F107,UART发送错误数据 [复制链接]

小弟初学STM32F以前玩过51单片机,现在搞这个对使用ST的库相对还不是很适应,按照教程创建了一个MDK工程,添加了V3.5的库,main里做了GPIO测试没有问题,但是使用UART却出了问题,我使用的是STM32F107VCT6,使用它的USART1端口重新映射到了PB6,PB7,我打算不断发送一个字节0x24,可是我用PC收到的却是0xF9,搞了好几天都没搞定,求助各位大侠指点,谢谢啦~~~~~~~~!!!!

代码如下:

void usart_init(void)   
{
 GPIO_InitTypeDef GPIO_InitStructure;
 USART_InitTypeDef USART_InitStructure;

 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO,ENABLE);
   GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);//串口1重映射
  
   // USART1_TX -> PB6 , USART1_RX -> PB7
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;         
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOB, &GPIO_InitStructure);    

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;        
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 
   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOB, &GPIO_InitStructure);

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
  USART_StructInit(&USART_InitStructure);
    USART_InitStructure.USART_BaudRate = 115200;    //设置波特率为115200//
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;   //设置数据位为8位//
    USART_InitStructure.USART_StopBits = USART_StopBits_1;     //设置停止位为1位//
    USART_InitStructure.USART_Parity = USART_Parity_No;      //无奇偶校验位//
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    //发送与接收//
    USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;   //没有硬件流控//
  USART_Init(USART1, &USART_InitStructure);  //对串口1进行初始化
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //接收的中断使能打开:
    USART_ITConfig(USART1, USART_IT_TXE, ENABLE);  //发送的中断使能打开
  USART_Cmd(USART1 , ENABLE);

}

//发送函数

void SendByte(char ch)
{
 USART_SendData(USART1, (char) ch);
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
   {}
}

 

//延时函数

void Delay(void)
{
 unsigned long ik;
 for(ik=0;ik<0xffff8;ik++);
}

//指示灯初始化

void GPIO_Config(void)
{
  GPIO_InitTypeDef  GPIO_InitStruct;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_14|GPIO_Pin_15; 

  GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB,&GPIO_InitStruct);    

}

//main

int main (void)
{
 /* Setup STM32 system (clock, PLL and Flash configuration) */
   SystemInit();
  GPIO_Config();
  usart_init();
  while (1)
  {
 GPIO_SetBits(GPIOB,GPIO_Pin_0);
 GPIO_SetBits(GPIOB,GPIO_Pin_1);
 GPIO_SetBits(GPIOB,GPIO_Pin_14);
 GPIO_SetBits(GPIOB,GPIO_Pin_15);
 Delay();
 Delay();
 Delay();
 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
 GPIO_ResetBits(GPIOB,GPIO_Pin_1);
 GPIO_ResetBits(GPIOB,GPIO_Pin_14);
 GPIO_ResetBits(GPIOB,GPIO_Pin_15);
 Delay();
 Delay();
 Delay();
 SendByte(0x24);
  }
}

QQ截图未命名.gif (6.29 KB, 下载次数: 0)

QQ截图未命名.gif
此帖出自stm32/stm8论坛

最新回复

我也遇到了, 参考这篇文章 http://www.51hei.com/bbs/dpj-40945-1.html  详情 回复 发表于 2016-4-6 21:55
点赞 关注
 

回复
举报

25

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
求教,求安慰
此帖出自stm32/stm8论坛
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我也遇到了, 参考这篇文章 http://www.51hei.com/bbs/dpj-40945-1.html
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表