STM32F030 使用内部晶振,PF0与PF1作普通IO使用

发布者:大橙子5511最新更新时间:2018-10-20 来源: eefocus关键字:STM32F030  内部晶振  普通IO 手机看文章 扫描二维码
随时随地手机看文章

static void SetSysClock(void)
{
  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;
 
 
     

 //需要修改的关键地方,一定一定。。。。
  //RCC->CR |= ((uint32_t)RCC_CR_HSEON);
 RCC->CR &= ~((uint32_t)RCC_CR_HSEON);


 
  do
  {
    HSEStatus = RCC->CR & RCC_CR_HSERDY;
    StartUpCounter++; 
  } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if ((RCC->CR & RCC_CR_HSERDY) != RESET)
  {
    HSEStatus = (uint32_t)0x01;
  }
  else
  {
    HSEStatus = (uint32_t)0x00;
  } 

  if (HSEStatus == (uint32_t)0x01)
  {
   
    FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;

   
    RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
     
   
    RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;

   
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_PREDIV1 | RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLMULL6);
           
   
    RCC->CR |= RCC_CR_PLLON;

   
    while((RCC->CR & RCC_CR_PLLRDY) == 0)
    {
    }

   
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
    RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

   
    while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
    {
    }
  }
  else
  {
  } 
}


关键字:STM32F030  内部晶振  普通IO 引用地址:STM32F030 使用内部晶振,PF0与PF1作普通IO使用

上一篇:STM 32 之can 实例+代码解析
下一篇:STM32的HardFault_Handler问题调试方法

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

STM32F030 使用引脚输入
GPIO_InitTypeDef GPIO_InitStructure; /* Enable the BUTTON Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); /* Configure Button pin as input */ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_
[单片机]
STM8学习笔记---普通IO口模拟串口功能
串口在产品应用中很常见,但是单片机的默认带的串口往往比较少,有时候就会出现串口不够用,所以就想着能不能用普通IO口模拟串口来实现串口的功能。 要模拟串口首先要清楚串口数据传输过程中的原理。 常用的串口格式为 1位起始位,8位数据位,无校验位,1位结束位。起始位为低电平,结束位为高电平。数据0为低电平,数据1为高电平。 所以最简单的串口传输一个字节总共有10个电平变化,每个电平的宽度由波特率决定的。 具体的串口数据分析,可以参考这篇文章:STM8学习笔记---通过示波器分析串口数据。 下面看一个通过波特率如何计算每个位的电平宽度。 发送一个字节,以stm8中9600bit/s的波特率计算的过程为例(1秒钟传输
[单片机]
STM8学习笔记---<font color='red'>普通</font><font color='red'>IO</font>口模拟串口功能
STM32F030控制LED
(1)hardware_conf.h函数中: #define NETLED(tmp) GPIOA- ODR=tmp?(GPIOA- ODR|1 4):(GPIOA- ODR&(~(1 4))) //上网指示灯 #define DOORLED(tmp) GPIOA- ODR=tmp?(GPIOA- ODR|1 12):(GPIOA- ODR&(~(1 12))) //开门指示灯 #define MENCI(tmp) GPIOA- ODR=tmp?(GPIOA- ODR|1 11):(GPIOA- ODR&(~(1 11))) //门磁指示灯 (2)main函数中: void main(void) { NE
[单片机]
【STM32F103攻城笔记】内部晶振HSI倍频设置系统时钟
首先说明,因为STM32芯片的型号不同,所以对于不同芯片有不同频率的限制,比如某些时钟频率不能大于多少,这是根据手册来设置的!但改变频率的寄存器都一样,只是我们设置频率大小要受芯片的限制!下面我用的芯片型号是STM32F103VBT6!它就限制了内部晶振的倍频不能大于64MHz(但其实我实验出来是52MHz)! 本文是利用内部晶振(HSI)来倍频,与外部晶振倍频区分开! 第一步:打开system_STM32f10x.c,找到函数void SystemInit (void){},把原有的都注释掉,将下面的代码复制进去: /* 开启HSI 即内部晶振时钟 */ RCC- CR |= (uint32_t)0x
[单片机]
【STM32F103攻城笔记】<font color='red'>内部</font><font color='red'>晶振</font>HSI倍频设置系统时钟
最新的MSP430普通IO模拟IIC程序!
#include GLOBAL.h #include stdlib.h #include stdbool.h #include msp430x41x.h //------------------------------------------ #define IicWpDirOut P6DIR |= BIT5 #define IicWpLow P6OUT &=~ BIT5 #define IicWpHig P6OUT |= BIT5 #define IicSclDirOut P6DIR |= BIT6 #define IicSclLow P6OUT &=~ BIT6
[单片机]
51单片机普通IO口模拟串口源程序
大家放心用,但是你们程序要好好看看,容易中断冲突,现在我们也在解决中,接收和发送字符串的程序有需要的邮箱给你们发送过去 东西是好东西,我们遇到了中断问题,有点麻烦,数据采集上来后用模拟串口挂到485总线,向一个控制单片机发送数据,用12864显示,但是控制单片机的串口通信的中断和模拟串口中断冲突,上位机和下位机没有办法通信,今天下午实在没有办法了,又做了一块单片机最小系统,让采集板上的数据之间和这块最小系统板进行通信12864上显示,现在还没有想到好的解决办法,等解决之后再告诉大家,还有就是接受字符串的时候,先进行解包,再进行标识位检测,这个程序发程序的方法是一个一个字符发送的,接收的时候要先放进数组里面,要是有需要的可以单独联系
[单片机]
怎样辨别单片机的内部晶振与外部晶振
  单片机的外部晶振稳定,受温度,湿度等环境因素影响比内部振荡器小,精度比较高。而且当设计需要降低功耗时,比如说便携式仪表等,就需要外设晶振,因为内部振荡器不能根据需要停止,而外部晶振可以适时停止,从而进入休眠状态,降低功耗。   而单片机的内部晶振一般不够准确,误差比较大。但是单片机的内部晶振和外部晶振的作用都是一样的,给系统提供时钟。如果对频率要求不高的话(比如不涉及串口通信和精确定时等的话),用内部晶振就足够了,并且这样成本还低。内部时钟,频率受温度等其它影响,但是能省下晶振的钱,还有2个I/O.所以,如果对频率要求不高,一般是优先选用内部振荡。 假如你想要省电,用了SLEEP,那你就不能用内部振荡了,内部振荡回停止!
[单片机]
stm32f103系列芯片JTAG口当做普通IO使用
使用的芯片是stm32f103c8t6. 今天在调试板子时发现在PA15口上的LED灯无论输出高还是低都只有一个中间电平2.3V,后来百度说这个口(PA15--JTDI)默认用作JTAG调试口,需要配置下成普通IO口,于是按照那人的办法写了2句:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE); 不写还好,一写呵呵哒,结果连原本用来下载、调试程序用的SWD口都不能用了。。。后来在STM32库中找到了正确的写法:RCC_APB2PeriphClockCmd(RCC_APB2Peri
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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