新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32單片機的學習經驗

        STM32單片機的學習經驗

        作者: 時間:2016-11-29 來源:網絡 收藏

        void GPIO_Configuration(void) //GPIO配置函數
        {
        //GPIO_DeInit(GPIOA);
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
        }

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

        void EXTI_Config(void)
        {
        EXTI_InitTypeDef EXTI_InitStructure;
        // 管腳選擇
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
        // 清除 EXTI線路掛起位
        EXTI_ClearITPendingBit(EXTI_Line8|EXTI_Line9);
        //
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
        EXTI_InitStructure.EXTI_Line = EXTI_Line8|EXTI_Line9;
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;
        EXTI_Init(&EXTI_InitStructure);
        }

        void NVIC_Config(void)
        {
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // 注意名稱是“_IRQn”,不是“_IRQChannel”
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
        }

        int main(void)
        {
        RCC_Configuration();
        GPIO_Configuration();
        EXTI_Config();
        NVIC_Config();

        while(1)
        {
        GPIO_ResetBits(GPIOB,GPIO_Pin_12);
        GPIO_ResetBits(GPIOA,GPIO_Pin_4);
        }
        }

        中斷文件 it.c中

        void EXTI9_5_IRQHandler(void)
        {

        if ( EXTI_GetITStatus(EXTI_Line8) != RESET )
        {
        EXTI_ClearITPendingBit(EXTI_Line8);


        GPIO_SetBits(GPIOA,GPIO_Pin_4);

        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==0);

        }

        if ( EXTI_GetITStatus(EXTI_Line9) != RESET )
        {
        EXTI_ClearITPendingBit(EXTI_Line9);

        GPIO_SetBits(GPIOB,GPIO_Pin_12);

        while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0);
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 青河县| 江口县| 泽州县| 平南县| 岳普湖县| 永定县| 新和县| 驻马店市| 霍城县| 依兰县| 筠连县| 静安区| 蓬安县| 当雄县| 安顺市| 息烽县| 台中市| 江西省| 太仓市| 长汀县| 金坛市| 清苑县| 无为县| 象山县| 玉环县| 襄城县| 凌源市| 简阳市| 新建县| 延川县| 肇东市| 留坝县| 海安县| 益阳市| 永济市| 佳木斯市| 册亨县| 合作市| 陆川县| 峨眉山市| 新竹市|