OpenEdv-开源电子网

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

初学者,串口3不会发送,请指教,谢谢

[复制链接]

4

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
108
金钱
108
注册时间
2012-2-19
在线时间
22 小时
发表于 2014-10-21 10:24:47 | 显示全部楼层 |阅读模式
5金钱
#include "sys.h"
#include "usart.h"
#include "delay.h"

 void uart3_init(u32 pclk1,u32 bound)
 {  
  float temp;
  u16 mantissa;
  u16 fraction;   
  temp=(float)(pclk1*1000000)/(bound*16);//得到USARTDIV
  mantissa=temp; //得到整数部分
  fraction=(temp-mantissa)*16; //得到小数部分  
     mantissa<<=4;
  mantissa+=fraction; 
 
 
  RCC->APB2ENR|=1<<3;   //使能PORTB口时钟  
//  GPIOB->CRH&=0XFFFFFF0F; //IO状态设置
// GPIOB->CRH|=0X00000030; //IO状态设置  
  
  GPIOB->CRH&=0XFFFF00FF; //IO状态设置
  GPIOB->CRH|=0X00008B00; //IO状态设置  

  RCC->APB1ENR|=1<<18;   //使能串口时钟 
   
  RCC->APB1RSTR|=1<<18;   //复位串口2
  RCC->APB1RSTR&=~(1<<18);//停止复位     
  //波特率设置
  USART3->BRR=mantissa; // 波特率设置  
  USART3->CR1|=0X200C;   //1位停止,无校验位.

 }
 int main(void)
 {  
  Stm32_Clock_Init(9);//系统时钟设置
  delay_init(72);   //延时初始化
  uart3_init(36,9600);
 
  while(1)
  {
     USART3->DR=0x51;
    while((USART3->SR&0X40)==0);
  }
 
 应该没有问题呀


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

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13138
金钱
13138
注册时间
2012-11-26
在线时间
3814 小时
发表于 2014-10-21 10:56:20 | 显示全部楼层
看不懂寄存器版 

帮顶
学无止境
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2014-10-21 11:24:24 | 显示全部楼层
RCC->APB1ENR|=1<<18;   //使能串口时钟 
这句位置不太好,其他没发现问题
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 01:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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