zoukankan      html  css  js  c++  java
  • 嵌入式系统外部中断实验(按下按键,LED灯依次熄灭)

    #include "stm32f10x.h"
    #include <stdio.h>
    #include <String.h>

    void RCC_cfg(void);
    void GPIO_cfg(void);
    void Delay(uint32_t nCount);
    void NVIC_cfg(void);
    void EXTIX_Init(void);

    u8 cnt;

    int main(void)
    {
     cnt=0;
     RCC_cfg();
     GPIO_cfg();
     NVIC_cfg();
     EXTIX_Init();
     while(1){
      GPIO_SetBits(GPIOF,GPIO_Pin_6);
      GPIO_SetBits(GPIOF,GPIO_Pin_7);
      GPIO_SetBits(GPIOF,GPIO_Pin_8);
      GPIO_SetBits(GPIOF,GPIO_Pin_9);
      Delay(0x2fffff);
     }
    }

    void RCC_cfg(void)
    {
     RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG|RCC_APB2Periph_AFIO,ENABLE);
    }

    void GPIO_cfg(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(GPIOF,&GPIO_InitStructure);
     
     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
     GPIO_Init(GPIOG,&GPIO_InitStructure);
    }

    void Delay ( uint32_t nCount)
    {
     for(;nCount !=0;nCount--);
    }

    void NVIC_cfg(void)
    {
     NVIC_InitTypeDef NVIC_InitStructure;
     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
     
     NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01;
     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
     NVIC_Init(&NVIC_InitStructure);
    }
    void EXTIX_Init(void)
    {
     
     EXTI_InitTypeDef EXTI_InitStructure;
     EXTI_ClearITPendingBit(EXTI_Line6);
     GPIO_EXTILineConfig(GPIO_PortSourceGPIOG,GPIO_PinSource6);
     
     EXTI_InitStructure.EXTI_Line=EXTI_Line6;
     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
     EXTI_Init(&EXTI_InitStructure);
    }

    void EXTI9_5_IRQHandler(void)
    {
     Delay(1000);
     if(!(GPIOG->IDR & 0x0040))
     {
      switch(cnt)
       {case 0:
        GPIO_ResetBits(GPIOF,GPIO_Pin_6);
         Delay(0x2fffff);
         break;
        case 1:
          GPIO_ResetBits(GPIOF,GPIO_Pin_7);
         Delay(0x2fffff);
         break;
       case 2:
        GPIO_ResetBits(GPIOF,GPIO_Pin_8);
         Delay(0x2fffff);
         break;
       case 3:
        GPIO_ResetBits(GPIOF,GPIO_Pin_9);
         Delay(0x2fffff);
         break;
      }
     }
     cnt++;
     if(cnt==4)
      cnt=0;
     EXTI_ClearITPendingBit(EXTI_Line6);
    }

  • 相关阅读:
    ztree : 增删改功能demo与自定义DOM功能demo的结合
    CF786B Legacy 线段树优化建图
    UVA11992 Fast Matrix Operations 一次开多棵线段树
    P3950 部落冲突 树链剖分
    洛谷P1471 方差 线段树维护区间方差
    2019.7.26 T1 树剖+双标记
    P1505 [国家集训队]旅游
    NOIP2015 运输计划 树上差分+树剖
    P1373 小a和uim之大逃离 四维dp,维护差值
    Pyhton之subprocess模块和configparser模块
  • 原文地址:https://www.cnblogs.com/lls1350767625/p/8024956.html
Copyright © 2011-2022 走看看