• K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭


      1 #include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
      2 #include "stm32f10x_gpio.h"
      3 #include "stm32f10x_exti.h"
      4 #include "misc.h"
      5 /*
      6 *K1 K2作为中断源控制红色LED灯,实现任意键按一下LED灯亮或者灭
      7 */
      8 /*GPIO、NVIC、EXTI配置*/
      9 int    peizhi()
     10 {
     11 
     12     /*GPIO配置*/
     13     //   K1配置 PA0
     14 GPIO_InitTypeDef a;
     15 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
     16 a.GPIO_Speed=GPIO_Speed_50MHz;
     17 a.GPIO_Pin=GPIO_Pin_5;
     18 a.GPIO_Mode=GPIO_Mode_Out_PP;
     19 GPIO_Init(GPIOB,&a);
     20 
     21     
     22 /*NVIC嵌套向量中断控制器*/
     23 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);    
     24 NVIC_InitTypeDef b;
     25 b.NVIC_IRQChannel = EXTI0_IRQn;//EXTI0_IRQn外部中断线0中断
     26 b.NVIC_IRQChannelPreemptionPriority = 1;//0 1 2 3 4 
     27 b.NVIC_IRQChannelSubPriority = 1;//0 1 2 3 4 
     28 b.NVIC_IRQChannelCmd = ENABLE;
     29 NVIC_Init(&b);
     30         
     31     /*外部中断EXTI配置*/
     32 EXTI_InitTypeDef c;
     33 c.EXTI_Line=EXTI_Line0;//外部路线0 和13
     34 c.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式
     35 c.EXTI_Trigger=EXTI_Trigger_Rising;//上升沿为中断请求
     36 c.EXTI_LineCmd=ENABLE;//使能
     37 EXTI_Init(&c);//指向结构体EXTI_InitTypeDef的指针a
     38 
     39 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//选择GPIO管脚用作外部中断线路
     40 
     41 
     42 
     43 //K2配置  PC13
     44 //以下K2的配置基于K1配置的,就是说K2很多配置和K1相同的,只是把不同的配置写下来
     45 
     46 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);
     47 GPIO_Init(GPIOB,&a);
     48 
     49 b.NVIC_IRQChannel = EXTI15_10_IRQn;
     50 NVIC_Init(&b);
     51 
     52 c.EXTI_Line = EXTI_Line13;
     53 EXTI_Init(&c);
     54 
     55 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13);
     56 
     57 }
     58 
     59 
     60 /*主函数*/
     61 int main(void)
     62 {
     63     peizhi();
     64     
     65 }
     66 
     67 /*中断服务函数*/
     68 void EXTI0_IRQHandler(void)
     69 {
     70     //确保是否产生EXTI line中断
     71     if(EXTI_GetITStatus(EXTI_Line0)!=RESET) // 检查指定的EXTI线路触发请求发生与否
     72     {
     73         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//
     74         {
     75         GPIO_SetBits(GPIOB,GPIO_Pin_5);
     76         }
     77         else
     78         {    
     79         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
     80         }
     81         EXTI_ClearITPendingBit(EXTI_Line0);
     82     }
     83 }
     84 
     85     void EXTI15_10_IRQHandler(void)
     86 {
     87     //确保是否产生EXTI line中断
     88     if(EXTI_GetITStatus(EXTI_Line13)!=RESET) // 检查指定的EXTI线路触发请求发生与否
     89     {
     90         if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5)==0)//
     91         {
     92         GPIO_SetBits(GPIOB,GPIO_Pin_5);
     93         }
     94         else
     95         {    
     96         GPIO_ResetBits(GPIOB,GPIO_Pin_5);
     97         }
     98         EXTI_ClearITPendingBit(EXTI_Line13);
     99     }        
    100 }
  • 相关阅读:
    自定义View绘制字符串
    自定义View实现图片的绘制、旋转、缩放
    Android圆形图片--ImageView
    laravel安装excel功能
    jQuery修改css属性
    cssText
    MySQL 启动、关闭、选择数据库等命令
    MySQL数据文件的导入、导出
    datepicker的使用
    laravel无法显示路由界面
  • 原文地址:https://www.cnblogs.com/kinson/p/7716883.html
Copyright © 2020-2023  润新知