野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15142|回复: 3

串口发送老是乱码?

[复制链接]
发表于 2015-6-4 17:57:12 | 显示全部楼层 |阅读模式
  • #include "stm32f10x.h"
  • void init()
  • {
  •         uint8_t temp=0;
  •         RCC->CR |= RCC_CR_HSEON        ;
  •         while(!(RCC->CR>>17));
  •         FLASH->ACR|=0x32;
  •         RCC->CFGR |= RCC_CFGR_PPRE1_DIV2 ;
  •         RCC->CFGR |= RCC_CFGR_PLLMULL9;
  •           RCC->CFGR |= RCC_CFGR_PLLSRC;
  •         RCC->CR |= RCC_CR_PLLON;
  •         while(!(RCC->CR>>25)) ;
  •         RCC->CFGR|=0x00000002;    //PLL作为系统时钟
  •         if(temp!=0x02)            //等待PLL作为系统时钟设置成功
  •         {
  •                 temp=RCC->CFGR>>2;
  •                 temp&=0x03;
  •         }
  •         RCC->APB2ENR |= (1<<14);        //使能uart1时钟
  •         RCC->APB2ENR |=        (1<<2);                 //使能PTA时钟
  •         GPIOA->CRH =0;
  •         GPIOA->CRH |=(GPIO_CRH_MODE9+GPIO_CRH_CNF9_1+GPIO_CRH_CNF10_1);//A9推挽输出,A10上下拉输入
  •         RCC->APB2RSTR|=1<<14;   //复位串口1
  •         RCC->APB2RSTR&=~(1<<14);//停止复位
  •         USART1->BRR |= 0X1D6;          //波特率
  • //        USART1->CR1=0;
  •         USART1->CR1 |= (1<<13);                //          USART模块使能
  • //        USART1->DR = 2;
  • //        while(!(USART1->SR>>7));
  • //        USART1->CR1 |= 0X0C;
  •                                        
  • }
  • int main()
  • {
  •         init();
  •         while(1)
  •         {
  •                
  •                  //USART1->DR        = 0;
  •                 USART1->DR        = 0x03;                //装载数据
  •                 USART1->CR1 |= 0X0C;          //  开始发送
  •                 while(!(USART1->SR>>7));        //等待移入寄存器
  •                 while(!(USART1->SR>>6));        //等待发送完成
  •                 USART1->SR&=~(1<<6);                 //清除标志位
  •         }
  • }


回复

使用道具 举报

发表于 2015-6-4 19:21:44 | 显示全部楼层
本帖最后由 亽亼 于 2015-6-4 19:22 编辑

http://www.firebbs.cn/thread-8673-1-1.html建议使用库函数版本,有很多例程
乱码问题不外乎波特率问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 21:02:43 | 显示全部楼层
亽亼 发表于 2015-6-4 19:21
http://www.firebbs.cn/thread-8673-1-1.html建议使用库函数版本,有很多例程
乱码问题不外乎波特率问 ...

问题解决了,确实是波特率问题。我想和你讨论下关于库的问题。为什么你们都用库写程序?用库找个自己想要的函数要找半天(用库也得了解寄存器感觉)。而且觉得学习库的时间可以拿来学习寄存器了。学会配寄存器了,以后单片机就通吃了吧(单片机各模块寄存器差不多吧)。你认为呢?
回复 支持 反对

使用道具 举报

发表于 2015-6-8 23:05:38 | 显示全部楼层
学32不就是冲着寄存器来的麽,怎么又回到寄存器了? 可能个人习惯不一样吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-1-9 02:24 , Processed in 0.031343 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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