zoukankan      html  css  js  c++  java
  • GPIOLED配置、key、中断NVIC配置

     1 #include "stm32f10x.h"
     2 #include "stm32f10x_gpio.h"
     3 
     4 //内核,(NVIC)
     5 #include "misc.h"
     6 
     7 //点亮红色灯  PB5
     8 //step1:使能
     9 Rcc_APB2PeriPhClockCmd(
    10 Rcc_APB2PeriPh_GPIOB,ENABLE);
    11 //step2:定义GPIO初始化结构体变量
    12 GPIO_InitTypeDef a;
    13 a.GPIO_Speed = GPIO_Speed_50MHz;
    14 a.GPIO_Pin = GPIO_Pin_5;
    15 //推挽输出
    16 a.GPIO_Mode = GPIO_Mode_OUT_PP;
    17 //step3:调用GPIO初始化函数
    18 GPIO_Init(GPIOB,&a);
    19 //step4:设置PB5为低电平
    20 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    21 
    22 //读取引脚的电平
    23 int i = GPIO_ReadDataInputBit(
    24 GPIOB,GPIO_Pin_5);
    25 
    26 /*按键初始化*/
    27 Rcc_APB2PeriPhClockCmd(
    28 Rcc_APB2PeriPh_GPIOA,ENABLE);
    29 //step2:定义GPIO初始化结构体变量
    30 GPIO_InitTypeDef a;
    31 a.GPIO_Speed = GPIO_Speed_50MHz;
    32 a.GPIO_Pin = GPIO_Pin_0;
    33 //浮空输入
    34 a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    35 //step3:调用GPIO初始化函数
    36 GPIO_Init(GPIOA,&a);
    37 
    38 
    39 /*循环读取按键  PA0*/
    40 while(1){
    41     int i = GPIO_ReadDataInputBit(
    42     GPIOB,GPIO_Pin_5);
    43     if(i == 0){
    44         //按键按下,点亮LED
    45         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    46     }else{
    47         //松开,熄灭灯
    48         GPIO_SetBits(GPIOB,GPIO_Pin_5);
    49     }
    50 }
    51 while(1){
    52     if(GPIO_ReadDataInputBit(
    53     GPIOA,GPIO_Pin_0) == 0){
    54         //按键按下进入这里执行
    55         if(GPIO_ReadDataInputBit(
    56         GPIOB,GPIO_Pin_5) == 0){
    57         //每按一次,灯的状态反转
    58         GPIO_SetBits(GPIOB,GPIO_Pin_5);
    59         }else{
    60         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    61         }    
    62     }
    63 }
    64 
    65 /*NVIC*/
    66 //step1:优先级分组
    67 NVIC_PriorityGroupConfig(
    68     NVIC_PriorityGroup_1;
    69 );
    70 //step2:NVIC初始化结构体
    71 NVIC_InitTypeDef b;
    72 //中断源
    73 b.NVIC_IRQChannel =  EXTI0_IRQn;
    74 //抢占优先级
    75 b.NVIC_IRQChannelPreemptionPriority = 1;
    76 //子优先级
    77 b.NVIC_IRQChannelSubPriority = 1;
    78 //使能
    79 b.NVIC_IRQChannelCmd = ENABLE;
    80 //step3:NVIC初始化函数
    81 NVIC_Init(&b);
    82 
    83 //中断处理函数
    84 void 中断名_IRQHandler(){    
    85 }
    86 void EXTI0_IRQHandler(){
    87 
    88 }
      1 #include "stm32f10x.h"
      2 #include "stm32f10x_gpio.h"
      3 #include "stm32f10x_exti.h"
      4 
      5 //内核,(NVIC)
      6 #include "misc.h"
      7 
      8 //点亮红色灯  PB5
      9 //step1:使能
     10 Rcc_APB2PeriPhClockCmd(
     11 Rcc_APB2PeriPh_GPIOB,ENABLE);
     12 //step2:定义GPIO初始化结构体变量
     13 GPIO_InitTypeDef a;
     14 a.GPIO_Speed = GPIO_Speed_50MHz;
     15 a.GPIO_Pin = GPIO_Pin_5;
     16 //推挽输出
     17 a.GPIO_Mode = GPIO_Mode_OUT_PP;
     18 //step3:调用GPIO初始化函数
     19 GPIO_Init(GPIOB,&a);
     20 //step4:设置PB5为低电平
     21 GPIO_ResetBits(GPIOB,GPIO_Pin_5);
     22 
     23 //读取引脚的电平
     24 int i = GPIO_ReadDataInputBit(
     25 GPIOB,GPIO_Pin_5);
     26 
     27 /*按键初始化*/
     28 Rcc_APB2PeriPhClockCmd(
     29 Rcc_APB2PeriPh_GPIOA,ENABLE);
     30 //step2:定义GPIO初始化结构体变量
     31 GPIO_InitTypeDef a;
     32 a.GPIO_Speed = GPIO_Speed_50MHz;
     33 a.GPIO_Pin = GPIO_Pin_0;
     34 //浮空输入
     35 a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
     36 //step3:调用GPIO初始化函数
     37 GPIO_Init(GPIOA,&a);
     38 
     39 
     40 /*循环读取按键  PA0*/
     41 while(1){
     42     int i = GPIO_ReadDataInputBit(
     43     GPIOB,GPIO_Pin_5);
     44     if(i == 0){
     45         //按键按下,点亮LED
     46         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
     47     }else{
     48         //松开,熄灭灯
     49         GPIO_SetBits(GPIOB,GPIO_Pin_5);
     50     }
     51 }
     52 while(1){
     53     if(GPIO_ReadDataInputBit(
     54     GPIOA,GPIO_Pin_0) == 0){
     55         //按键按下进入这里执行
     56         if(GPIO_ReadDataInputBit(
     57         GPIOB,GPIO_Pin_5) == 0){
     58         //每按一次,灯的状态反转
     59         GPIO_SetBits(GPIOB,GPIO_Pin_5);
     60         }else{
     61         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
     62         }    
     63     }
     64 }
     65 
     66 /*NVIC*/
     67 //step1:优先级分组
     68 NVIC_PriorityGroupConfig(
     69     NVIC_PriorityGroup_1;
     70 );
     71 //step2:NVIC初始化结构体
     72 NVIC_InitTypeDef b;
     73 //中断源
     74 b.NVIC_IRQChannel =  EXTI0_IRQn;
     75 //抢占优先级
     76 b.NVIC_IRQChannelPreemptionPriority = 1;
     77 //子优先级
     78 b.NVIC_IRQChannelSubPriority = 1;
     79 //使能
     80 b.NVIC_IRQChannelCmd = ENABLE;
     81 //step3:NVIC初始化函数
     82 NVIC_Init(&b);
     83 
     84 //中断处理函数
     85 void 中断名_IRQHandler(){    
     86 }
     87 
     88 void EXTI0_IRQHandler(){
     89 
     90 }
     91 
     92 /*外部中断配置*/
     93 //外部中断结构体
     94 EXTI_InitTypeDef c;
     95 c.EXTI_Line = EXTI_Line0;
     96 c.EXTI_Mode = EXTI_Mode_Interrupt;
     97 c.EXTI_Trigger = EXTI_Trigger_Rising;
     98 c.EXTI_LineCmd = ENABLE;
     99 //外部中断初始化函数
    100 EXTI_Init(&c);
    101 
    102 //配置外部中断的触发引脚
    103 GPIO_EXTILineConfig(
    104     GPIOPortSourceGPIOC,GPIOPinSourcePin0
    105 );
    106 Rcc_APB2PeriPhClockCmd(
    107 Rcc_APB2PeriPh_GPIOC,ENABLE);
    108 GPIO_InitTypeDef a;
    109 a.GPIO_Speed = GPIO_Speed_50MHz;
    110 a.GPIO_Pin = GPIO_Pin_0;
    111 //浮空输入
    112 a.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    113 GPIO_Init(GPIOC,&a);
    114 
    115 void EXTI0_IRQHandler(){
    116     GPIO_ResetBits(GPIOB,GPIO_Pin_5);
    117     
    118     手动把中断标志位清零
    119     EXTI_ClearITPendingBit(EXTI_Line0);
    120 }
  • 相关阅读:
    Tomcat配置JMX远程监控(Windown7 Linxu)
    Maven Tomcat:run 使用tomcat7
    关于C3P0容错和自动重连特性的研究
    密码算法记录
    Linxu 安装Nignx
    Linxu Yum方式安装Mysql
    Linxu
    tomcat结合nginx使用小结
    Tomcat性能优化(三) Executor配置
    深入学习C#匿名函数、委托、Lambda表达式、表达式树类型——Expression tree types
  • 原文地址:https://www.cnblogs.com/kinson/p/7685089.html
Copyright © 2011-2022 走看看