stm32f103 rcc时钟寄存器设置和usart寄存器

发布者:SereneJourney最新更新时间:2018-11-30 来源: eefocus关键字:stm32f103  rcc  时钟寄存器  usart寄存器 手机看文章 扫描二维码
随时随地手机看文章

这几天把rcc时钟搞明白了。其实主要是流程 看错了计算器1到31位,结果是错位了,一直找不到原因。


原来mac 自带编程计算器也是从0到31


stm32中文手册讲得比较明白


自己摸索下设置了串口发送数据


自己用的是蓝色药丸 (blue pill )淘宝10块不到一小块 stm32f103c8t6


led灯是portc 13脚


本程序全部是用寄存器方式设置



#include "stm32f10x_lib.h"

#include

#include "sys.h"

//测试c++ 

class LED

{

public:

  LED();

  ~LED();

  

};

 

void delay(void) 

    volatile unsigned int i; 

    for( i = 0; i < 0x3fffff; ++i);

void delay_ms(void) 

    volatile unsigned int i; 

    for( i = 0; i < 0x55; ++i);

void MY_NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset)  

{      

SCB->VTOR = NVIC_VectTab|(Offset & (u32)0x1FFFFF80);//设置NVIC的向量表偏移寄存器

//用于标识向量表是在CODE区还是在RAM区

}

void MYRCC_DeInit(void)

{

  RCC->APB1RSTR = 0x00000000;//复位结束  

RCC->APB2RSTR = 0x00000000; 

 

  RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.   

  //RCC->APB2ENR = 0x00000000; //外设时钟关闭.    

  RCC->APB1ENR = 0x00000000;   

RCC->CIR = 0x00000000;     //关闭所有中断

 

//RCC->APB2RSTR|=1<<4; //ADC1复位

//RCC->APB2RSTR&=~(1<<4);

 

//配置向量表   

     MY_NVIC_SetVectorTable(0x08000000,0x0);

}

void ClockInit(u8 PLL)

{

    unsigned char temp=0;

    MYRCC_DeInit();   //复位并配置向量表

    RCC->CR|=(1<<16);  //外部高速时钟使能HSEON

    while(!(RCC->CR>>17));//等待外部时钟就绪

    RCC->CFGR=0x00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;

   

  // RCC->CFGR &= (uint32_t)((uint32_t)~(0x00010000 | 0x00020000 |0x003C0000));

 //  RCC->CFGR |= (uint32_t)(0x00010000 | 0x001C0000);

  RCC->CFGR=0x1D0402;//0x1D2402;上面 用16位pllsrc是使用HSE时钟  17位是0 不分频 pllmul 111是0x1c 9倍频

    FLASH->ACR|=0x32;   //FLASH 2个延时周期

 

    RCC->CR|=0x01000000;  //PLLON

    while(!(RCC->CR>>25));//等待PLL锁定

    RCC->CFGR|=0x00000002;//PLL作为系统时钟

    while(temp!=0x02)     //等待PLL作为系统时钟设置成功

    {

    temp=RCC->CFGR>>2;

    temp&=0x03;

    }

}

 

void uart_init(u32 pclk2,u32 bound)

{    

  RCC->APB2ENR|=1<<2;   //使能PORTA口时钟  

  RCC->APB2ENR|=1<<14;  //使能串口时钟 

  GPIOA->CRH&=0XFFFFF00F;//IO状态设置

  GPIOA->CRH|=0X000008B0;//IO状态设置 

  RCC->APB2RSTR|=1<<14;   //复位串口1

  RCC->APB2RSTR&=~(1<<14);//停止复位         

  //波特率设置

  USART1->BRR=0x271; // 波特率设置  直接固化 如果总线是36 那波特率是57600 

  USART1->CR1|=0x200C;  //1位停止,无校验位.

 

}

int main(void)

{

 

//Stm32_Clock_Init(9);

  ClockInit(9);

///////////////////////////////////

  

   RCC->APB2ENR |=(1<<14);//使能usart1

   RCC->APB2ENR |=(1<<2);//使能PORTA口时钟  

  /* Infinite loop */

   RCC->APB2ENR |=(1<<4);  // 使能PORTC口的时钟 

    GPIOC->CRH|=0x100000;//pc13要用CRH 小8用CRL

    uart_init(72,115200);

    while(1)

    {  

        delay(); 

        GPIOC->ODR ^= (1<<13);

        for(char i=47;i<58;i++){

          USART1->DR=i;

        while(((USART1->SR & 0x40)==0));   

        }

         USART1->DR=0x00;

        while(((USART1->SR & 0x40)==0));

         //E6B189 汉 utf8编码

         USART1->DR=0xE6;

        while(((USART1->SR & 0x40)==0));

         USART1->DR=0xB1;

        while(((USART1->SR & 0x40)==0));

         USART1->DR=0x89;

        while(((USART1->SR & 0x40)==0));

 

//输出回车和换行

        USART1->DR=0x20;

        while(((USART1->SR & 0x40)==0));

        USART1->DR=0x0a;

        while(((USART1->SR & 0x40)==0));

        USART1->DR=0x0d;

 

    } 

}

关键字:stm32f103  rcc  时钟寄存器  usart寄存器 引用地址:stm32f103 rcc时钟寄存器设置和usart寄存器

上一篇:关于stm32的flash的擦除的理解
下一篇:STM32填坑:时钟使能必须在外设初始化之前

推荐阅读最新更新时间:2024-03-16 16:18

stm32f103 编码器模式总结
/************************************************************************** 函数功能:把TIM2初始化为编码器接口模式 入口参数:无 返回 值:无 **************************************************************************/ void Encoder_Init_TIM2(void) { RCC- APB1ENR|=1 0; //TIM2时钟使能 RCC- APB2ENR|=1 2; //使能PORTA时钟 GPIOA- CRL&=0XFFFFFF00;//PA0 PA1 GPIOA-
[单片机]
<font color='red'>stm32f103</font> 编码器模式总结
关于STM32F103C8T6内部Flash划分的详细说明
因为STM32的内部FLASH大小不一,不同的大小划分是不一样的,但是大同小异这里是以STM32F103C8T6为例进行说明。 基础知识补充: 1 字节 = 8 位(bit) 1 千字节(KB)= 1024 字节 1 兆字节(MB)= 1024 千字节(KB) 1 吉字节(GB)= 1024 兆字节(MB) 1 太字节(TB)= 1024 吉字节(GB) 下面是关于STM32F103C8T6内部Flash划分的详细说明: 容量: STM32F103C8T6的内部Flash容量为64KB,即64 * 1024字节,属于小容量产品。 以下是针对STM32F1系列芯片的常见型号,按照容量范围划分的示例: 扇区划分:
[单片机]
关于<font color='red'>STM32F103</font>C8T6内部Flash划分的详细说明
stm32f103VET6和stm32f103c8t6有什么区别?
我来终结下这个问题。 这两款单片机我都用过,其中无际单片机特训营其中一款wifi报警主机项目就是用了stm32f103c8t6。 stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3内核的单片机。 它们在硬件规格和性能上存在一些差异,下面我详细讲解下它们的差异之处: 1.封装形式 首先最明显的肯定是stm32f103VET6和stm32f103c8t6的封装引脚不同。 stm32f103VET6采用的是100引脚的LQFP封装,而stm32f103c8t6采用的是48引脚的LQFP封装,所以在PCB设计的时候需要考虑到它们引脚差异。 还有就是s
[单片机]
基于STM32F103——SIM900A发送短信+串口打印
最近用STM32F103做一个智能门锁小玩意,密码输入错误次数多进行验证码解锁,这里我采用SIM900A来通过发送短信输入验证码进行解锁。就是简单的了解了一下在这里也单独的写写这个SIM900A的一写笔记。 基本介绍 。。。。。。还是直接进入主题吧 一:单独测试 SIM900A是可以AT指令操作的,所以一般我拿到这种模块就是先单独的测试一下这个模块是否正常。通过一个USB-TTL 和 SIM900A连接 进行调试。用我们的电脑串口助手测试即可。没必要上来就用单片机,现单独测试了先。没问题再转成代码也不迟。 1.准备工作 USB-TTL一个 还有杜邦线就不用说啦 2.接线 3.指令操作 打开你的串口助手 注意
[单片机]
基于<font color='red'>STM32F103</font>——SIM900A发送短信+串口打印
STM32F103 超声波 串口输出数据
#include cj.h #include stm32f10x.h #include delay.h #include usart.h unsigned int overcount=0; void NVIC_Config(void)//优先级设置 { NVIC_InitTypeDef NVIC_InitStructer; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitStructer.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructer.NVIC_IRQChannelSubPrior
[单片机]
RCC—使用HSE配置系统时钟
RCC—使用HSE配置系统时钟 芯片提供时钟就要有时钟树 时钟树在参考手册RCC章节开头就有(这里的时钟树看到感觉眼睛打了马赛克,小弟截图技术有限) 什么是晶振? 晶振:晶体振荡器,用于各种电路中产生振荡频率,每个单片机里都会有晶振,给单片机提供时钟频率,振荡得越快,时钟频率就越高,单片机运行的速度就越快 解析时钟树的方法:(系统时钟) 时钟是由晶振提供的,首先要找到时钟的入口点。图中OSC_IN 和 OSC_OUT,这两个是外部晶振的引脚,所以时钟是从这里进入的。接有源晶振时,时钟从OSC_IN进入,OSC_OUT悬空。接无源晶振时,时钟从OSC_IN 和 OSC_OUT一起进入 时钟进入以后会经过PLL锁相环,进入前会
[单片机]
<font color='red'>RCC</font>—使用HSE配置系统时钟
stm32f103——滴答定时器
滴答定时器: 定时器的本质就是计数器。我们设置一个定值,然后计数器开始计数,从我们给的定值开始往下一直数,当数到0时,就做相应的动作(也可以不做什么,当把它用作延时计时的时候)。 滴答定时器systick是一个内核外设(即:内核自带的) 所以在《STM32F10xxx参考手册中文版.pdf》手册中没有相关描述,我们需要参考内核手册 《STM32F10xxx20xxx21xxxL1xxxx Cortex-M3 programming manual.pdf》 Systick是一个24bit的系统定时器(stm32F407的寄存器名字与位数都与f103一样,但是有些芯片定时器位数不同),向下计数(从定值开始数到0),当计数到
[单片机]
<font color='red'>stm32f103</font>——滴答定时器
入门必知 RCC的内部结构以及应用讲解
反激式 开关电源 在电源电路中是被应用最广泛的一个拓扑,其重要作用无需多说。本文就将讲解 RCC 的内部结构及其应用电路。 RCC器件的内部结构 图 1是RCC内部结构原理图。反激式开关电源集成电路包括振荡器、小占空比产生电路、占空比选择电路和消隐电路。振荡器与小占空比产生电路相连接,振荡器与 小占空比产生电路分别与占空比选择电路相连接,占空比选择电路与消隐电路相连接,欠压锁定(UVLO)是整个反激式开关电源集成电路的启动电路,控制反激 式开关电源集成电路的启动与关断,保护电路与输出驱动管VMO连接,消隐电路也控制输出驱动管VMO, 二极管 VD8直接连接引脚FB和引脚VCC,与反激 式开关电源集成电路外围的 电容 (即图l中
[电源管理]
入门必知 <font color='red'>RCC</font>的内部结构以及应用讲解
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved