新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 智林STM32程序源代碼的分析和整理02

        智林STM32程序源代碼的分析和整理02

        作者: 時間:2016-11-28 來源:網絡 收藏
        一、STM32時鐘配置程序分析

        1、RCC

        本文引用地址:http://www.104case.com/article/201611/322959.htm

        RCC是指Reset and Clock Control復位和時鐘控制。主要寄存包括控制、配置、中斷、外設復位、外設時鐘使能、復位狀態寄存器。

        內核的工作時鐘為SysClk,它的來源有三種:外部時鐘HSE、內部時鐘HSI和PLL輸出時鐘。當然PLL的時鐘也是來自于外部或內部時鐘。

        2、我的源程序

        void RCC_Config(void){//時鐘配置,采用外部時鐘和PLL

        ErrorStatus HSEStartUpStatus;

        RCC_DeInit();

        HSEStartUpStatus = RCC_WaitForHSEStartUp();

        //如果外部時鐘起振成功

        if(HSEStartUpStatus == SUCCESS)

        {

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

        FLASH_SetLatency(FLASH_Latency_2);

        RCC_HCLKConfig(RCC_SYSCLK_Div1);// HCLK = SYSCLK AHB時鐘等于系統時鐘

        RCC_PCLK2Config(RCC_HCLK_Div1);

        RCC_PCLK1Config(RCC_HCLK_Div2);// PCLK1 = HCLK/2 APB1時鐘等于1/2AHB時鐘

        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);

        RCC_PLLCmd(ENABLE);

        //等待PLL準備好

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//選擇PLL作為系統時鐘

        while(RCC_GetSYSCLKSource() != 0x08);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能APB1上的TIM2

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能三個IO口時鐘

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//使能IO復用功能時鐘

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能串口1時鐘

        }

        二、NVIC的配置

        1、NVIC

        它是指嵌套向量中斷控制器。中斷的數目與向量表的大小相關。加上保留的,每個向量占據4個字節,一共占據0x0000,00EC個字節。NVIC的配置與具體中斷相關,都在具體器件里配置,所以程序里的代碼很少。

        2、源代碼

        void NVIC_Config(void){

        #ifdefVECT_TAB_RAM

        NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

        #else

        NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

        #endif

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//STM32共有四位數字進行優先級選擇

        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 康保县| 洪洞县| 平舆县| 万安县| 稷山县| 富平县| 师宗县| 南靖县| 梅州市| 赤城县| 遵化市| 霞浦县| 天峨县| 通江县| 鲁山县| 临澧县| 云霄县| 青田县| 集安市| 姜堰市| 大化| 云龙县| 方城县| 仁布县| 石渠县| 雅安市| 榆社县| 那曲县| 黄浦区| 锦屏县| 海门市| 延津县| 潼关县| 五河县| 内江市| 来宾市| 普格县| 碌曲县| 金秀| 呼图壁县| 南丰县|