STM32使用外部晶振并设置主频为48M

发布者:亚瑟摩根最新更新时间:2022-07-14 来源: csdn关键字:STM32  外部晶振  主频 手机看文章 扫描二维码
随时随地手机看文章

因为项目上对时钟要求不高,只需要用到一个9600波特率的串口和一些普通IO口,下面是简单的使用方法。


void MYRCC_DeInit(void)

{

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

    RCC->APB2RSTR = 0x00000000;


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

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

    RCC->APB1ENR = 0x00000000;

    RCC->CR |= 0x00000001;     //使能内部高速时钟HSION

    RCC->CFGR &= 0xF8FF0000;   //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]

    RCC->CR &= 0xFEF6FFFF;     //复位HSEON,CSSON,PLLON

    RCC->CR &= 0xFFFBFFFF;     //复位HSEBYP

    RCC->CFGR &= 0xFF80FFFF;   //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE

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

    //配置向量表

#ifdef  VECT_TAB_RAM

    NVIC_SetVectorTable(0x20000000, 0x0);

#else

    NVIC_SetVectorTable(0x08000000, 0x0);

#endif

}




void Stm32_Clock_Init(u8 PLL)

{

    unsigned char temp = 0;

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

    RCC->CR |= 0x00000001; //内部高速时钟使能HSION

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

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

    PLL -= 2; //抵消2个单位

    RCC->CFGR |= PLL << 18; //设置PLL值 2~16

    RCC->CFGR |= 0 << 16; //PLLSRC ON  HSI经2分频后作为PLL输入时钟

    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;

    }

}



int main(void)

{

    int i;

    Stm32_Clock_Init(12);

    delay_init();     //延时函数初始化

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

    uart_init(9600); //串口初始化为115200

    LED_Init();      //LED端口初始化

    TIM3_Int_Init(49, 48 - 1); //10Khz的计数频率,计数到5000为500ms


    while(1)

    {

        printf("hellorn");

        delay_ms(1000);

    }

}


为了保证系统时钟的delay函数正常,还需要在system_stm32f10x.c中注释掉原有的时钟#define SYSCLK_FREQ_72MHz 72000000并改为#define SYSCLK_FREQ_48MHz 48000000。

在这里插入图片描述

关键字:STM32  外部晶振  主频 引用地址:STM32使用外部晶振并设置主频为48M

上一篇:STM32CubeF1的导入
下一篇:STM32串口1重映射到PB6、PB7

推荐阅读最新更新时间:2024-11-10 17:38

stm32——串口配置一般步骤
1、串口时钟使能,GPIO时钟使能: RCC_APB2PeriphClockCmd() 2、串口复位 USART_DeInit(); ——非必需 3、GPIO端口模式设置 GPIO_Init(); ——模式设置为GPIO_Mode_AF_PP 4、串口参数初始化 USART_Init(); 5、开启中断并初始化NVIC(当开启中断的时候才需要这个步骤) NVIC_Init(); USART_ITConfig(); 6、使能串口 USART_Cmd(); 7、编写中断处理函数 USARTx_IRQHandler(); 8、串口数据收发 void USART_SendDa
[单片机]
STM32 USART使用奇偶校验位
无校验位时,数据位常用8位 当使用就校验位时,数据位应设置为9位. 奇偶校验位也包含在数据位中。 详见参考手册:
[单片机]
<font color='red'>STM32</font> USART使用奇偶校验位
STM32开发笔记67: 在keil中使用ST-Link不能成功下载的解决方法
单片机型号:STM32F091RCT6 在Keil中使用ST-Link对STM32F091RCT6单片机下载程序,第1次可下载成功,第2次就不可以成功下载,如下图所示,找不到单片机。 但是使用STVP进行程序下载是没有问题的,这就说明硬件线路板没有问题,问题出现在Keil中。 经反复测试,发现只需将connect连接方式更改为under Reset就可以正确解决,如下图所示。
[单片机]
<font color='red'>STM32</font>开发笔记67: 在keil中使用ST-Link不能成功下载的解决方法
STM32 NVIC简化理解
一、STM32 (Cortex-M3) 中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和副优先级,也把响应优先级称作“亚优先级”或“响应优先级”,每个中断源都需要被指定这两种优先级。(数字小的优先级高) 1. 何为抢占式优先级(pre-emption priority) 抢占式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应(后者俗称中断嵌套)。 2. 何为副优先级(subpriority) 在抢占式优先级相同的情况下,高的副优先级的中断优先被响应; 在抢占式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应
[单片机]
Linux下开发STM32 使用gcc-arm-none-eabi工具链编译生成bin、hex文件
1.为什么不是gcc 在开发stm32的时候,编译工具链要使用gcc-arm-none-eabi,为什么不是gcc呢?这就要说到linux下的交叉编译了,因为我们要在PC机上编译出可以运行在ARM上的程序,使用gcc编译出的是在PC上运行的程序,所以我们要使用gcc-arm-none-eabi进行交叉编译~ 2.gcc-arm-none-eabi toolchain 介绍及安装 gcc-arm-none-eabi是一个开源的ARM开发工具链,适用于Arm Cortex-M和Coretex-A系列处理器,包括GNU编译器(GCC),以及GDB,可用于Windows,Linux,MacOS上的交叉编译。 gcc-arm-none-
[单片机]
Linux下开发<font color='red'>STM32</font> 使用gcc-arm-none-eabi工具链编译生成bin、hex文件
解决Stm32开发板每次下程序必须重新上电问题
Stm32的启动模式由 BOOT0和BOOT1进行配置,在下载模式下我们需要讲BOOT0配置成0电平,但往往忽略了BOOT1。 一般开发板厂家都会把BOOT0和BOOT0都做成可配置的。 我遇到的问题就是在下载程序的时候只在BOOT0上接了跳线帽讲其接地,但是BOOT1确由其悬空着,因此每次下载都必须重新上电才能被下载器认可,后来将BOOT1用跳线帽接到高电平后,问题成功解决,每次下载前只需要按下复位按键就可以了。
[单片机]
解决<font color='red'>Stm32</font>开发板每次下程序必须重新上电问题
STM32学习1:GPIO输出实验——点亮三色LED
一、概述: 1、发光二极管简介 发光二极管是半导体二极管的一种,可以把电能转化为光能,常简写为LED。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压约为5V。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算: R = (E - UF)/IF 式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。LED广泛应用于各种电子电路、家电、仪表等设备中,做电源或电平指示。 2、STM32 GPIO简介 STM32F4每组通用I/O 端口包括4 个32 位配置寄存器(MODER、OTYPER、OSPEEDR 和PUPDR)、2 个32 位数据寄存
[单片机]
<font color='red'>STM32</font>学习1:GPIO输出实验——点亮三色LED
【毕业设计】基于机智云的智能晾衣控制系统
摘要: 以Android手机为人机交互终端, 以STMicroelectronics的STM32F103C8T6为核心控制终端, 基于机智云物联网平台, 设计了一套用户通过互联网就能有效地对家中晾衣架进行操作的嵌入式智能控制系统, 避免人不在家时, 衣物被淋湿的问题。 该系统开发来自机智云开发者的毕设,具备手动和自动两种控制模式实现对晾衣架的合理控制, 并且一旦控制端与服务器失去连接, 将自动切换至自动模式工作。控制端采用FreeRTOS实时操作系统, 在实时性方面表现良好, 同时具有高稳定性能稳定地与机智云服务器进行通信。 引言 晾晒衣物是日常生活的一部分, 目前, 市面上有多种多样的晾衣架, 包括手动和电动等。但大部分
[单片机]
【毕业设计】基于机智云的智能晾衣控制系统
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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