新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM常用函數的配置函數---重點積累

        ARM常用函數的配置函數---重點積累

        作者: 時間:2016-11-26 來源:網絡 收藏
        //Author:"淚與汗的纏綿"

        //Data:2011-11月

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

        //功能:積累編程的思想與套路

        本頁所包含的配置函數有:
        void SysTick_Configuration(void);
        void GPIO_Configuration(void);//端口引腳功能的配置
        void EXTI_Configuration(void);//配置外部中斷線
        void NVIC_Configuration(void);//配置中斷的優先級、內部中斷向量
        void RCC_Configuration(void); //配置系統及其外設的時鐘
        void IWDG_Configuration(void);//看門狗的配置結構
        voidTIM_Configuration(void)
        voidADC_configuration();
        void DMA_Configuration(void);
        void DAC_Configuration(void);
        //同時需要配置的結構體變量
        GPIO_InitTypeDef GPIO_InitStructure;
        EXTI_InitTypeDef EXTI_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;

        *******//Cortex系統定時器(SysTick)*********************
        *******************************************************
        *******************************************************
        void SysTick_Configuration(void)
        {

        //選擇系統定時器(SysTick)的時鐘源
        SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);


        SysTick_SetReload(250000);


        SysTick_CounterCmd(SysTick_Counter_Enable);


        SysTick_ITConfig(ENABLE);
        }
        *********///GPIO的配置程序***************************************
        ******************************************************************
        *******************************************************************
        void GPIO_Configuration(void) void RCC_Configuration(void)
        {
        GPIO_InitTypeDef GPIO_InitStructure;


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_Init(GPIOC, &GPIO_InitStructure);


        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        }
        //中斷線路初始化
        void EXTI_Configuration(void)
        {

        EXTI_InitStructure.EXTI_Line = EXTI_Line9;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);


        EXTI_InitStructure.EXTI_Line = EXTI_Line13;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
        }
        ///嵌套中斷向量NVIC**********************************
        /
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQChannel;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_Init(&NVIC_InitStructure);

        //為EXTI_Line9使能并配置中斷向量

        //為EXTI_Line0使能并配置中斷向量
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
        NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;
        NVIC_Init(&NVIC_InitStructure);

        //為EXTI_Line9使能并配置中斷向量

        //為EXTI_Line13使能并配置中斷向量
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
        NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQChannel;
        NVIC_Init(&NVIC_InitStructure);

        }

        ********************************************************************
        **************系統時鐘的配置RCC_Configuration**********************
        void RCC_Configuration(void)
        {

        RCC_DeInit();

        RCC_HSEConfig(RCC_HSE_ON);

        HSEStartUpStatus = RCC_WaitForHSEStartUp();
        if(HSEStartUpStatus == SUCCESS)
        {

        RCC_HCLKConfig(RCC_SYSCLK_Div1);

        RCC_PCLK2Config(RCC_HCLK_Div1);

        RCC_PCLK1Config(RCC_HCLK_Div2);

        FLASH_SetLatency(FLASH_Latency_2);

        FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
        */
        RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

        RCC_PLLCmd(ENABLE);

        while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
        {
        }

        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

        while(RCC_GetSYSCLKSource() != 0x08)
        {
        }

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO, ENABLE);


        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 新津县| 军事| 丰台区| 神池县| 宁晋县| 普兰县| 张北县| 佛山市| 普兰店市| 巫溪县| 清河县| 区。| 临沧市| 墨竹工卡县| 阿巴嘎旗| 大石桥市| 微山县| 万安县| 太和县| 固原市| 凤山县| 新建县| 财经| 会理县| 胶州市| 五原县| 中山市| 介休市| 蒲江县| 西贡区| 讷河市| 阳西县| 曲麻莱县| 漳浦县| 石门县| 边坝县| 乐东| 奇台县| 丹东市| 长乐市| 平阴县|