OpenEdv-开源电子网

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

请大神们帮忙转变成库函数

[复制链接]

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2014-6-11 15:46:34 | 显示全部楼层 |阅读模式
5金钱
#include "stm32f10x.h"

#define uint unsigned int
#define uchar unsigned char

#define CLOCK 72/8 //时钟=72M

/*------------------------------------------------------------
                         us延时函数
------------------------------------------------------------*/
void DelayUs(unsigned int us)
{
    u8 n;            
    while(us--)for(n=0;n<CLOCK;n++);     
}

/*------------------------------------------------------------
                         ms延时函数
------------------------------------------------------------*/
void DelayMs(unsigned int ms)
{
    while(ms--)DelayUs(1000);    
}

/*------------------------------------------------------------
                      把所有时钟寄存器复位
------------------------------------------------------------*/
void RCC_DeInit(void)
{                                       
    RCC->APB2RSTR = 0x00000000;//外设复位            
    RCC->APB1RSTR = 0x00000000;         
      RCC->AHBENR = 0x00000014;  //flash时钟,闪存时钟使能.DMA时钟关闭      
      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;     //关闭所有中断
}


/*------------------------------------------------------------
                  外部8M,则得到72M的系统时钟
------------------------------------------------------------*/    
void Stm32_Clock_Init(void)
{
    unsigned char temp=0;
    u8 timeout=0;
    RCC_DeInit();
    RCC->CR|=0x00010000;  //外部高速时钟使能HSEON

    timeout=0;
    while(!(RCC->CR>>17)&&timeout<200)timeout++;//等待外部时钟就绪    

    //0-24M 等待0;24-48M 等待1;48-72M等待2;(非常重要!)       
    FLASH->ACR|=0x32;//FLASH 2个延时周期

    RCC->CFGR|=0X001D2400;//APB1/2=DIV2;AHB=DIV1LL=9*CLK;HSE作为PLL时钟源
    RCC->CR|=0x01000000;  //PLLON

    timeout=0;
    while(!(RCC->CR>>25)&&timeout<200)timeout++;//等待PLL锁定

    RCC->CFGR|=0x00000002;//PLL作为系统时钟
    while(temp!=0x02&&timeout<200) //等待PLL作为系统时钟设置成功
    
        temp=RCC->CFGR>>2;
        timeout++;
        temp&=0x03;
    }  

    

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

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-6-11 20:19:27 | 显示全部楼层
为什么要变成库呢,寄存器不是挺好的嘛。。。
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-14 21:42:50 | 显示全部楼层
回复【2楼】xiaoyan:
---------------------------------
想方便转移到原子的工程运用
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 04:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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