久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4014|回復: 3
收起左側

STM32中斷方式的按鍵控制程序Proteus仿真 8按鍵整理

[復制鏈接]
ID:740717 發表于 2020-4-29 10:58 | 顯示全部樓層 |閱讀模式
希望可以對你有用
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei圖片_20200429105644.png

單片機源程序如下:
  1. #include "stm32f10x_exti.h"
  2. #include "key.h"
  3. #include "Delay.h"

  4. void exit_config(void)
  5. {
  6.     EXTI_InitTypeDef  EXTI_InitStructure;
  7.     NVIC_InitTypeDef  NVIC_InitStructure;

  8.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

  9.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);        //EXTI8EXTI_Line8中斷線與PB8映射,設置PB8為中斷源EXTI_Line8
  10.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);        //設置PB9為中斷源EXTI_Line9
  11.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource10);        //設置PB10為中斷源EXTI_Line10
  12.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource11);        //設置PB11為中斷源EXTI_Line11
  13.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource12);        //EXTI12EXTI_Line12中斷線2與PB12映射,設置PB12為中斷源EXTI_Line12
  14.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource13);        //設置PB13為中斷源EXTI_Line13
  15.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);        //設置PB14為中斷源EXTI_Line14
  16.     GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource15);        //設置PB15為中斷源EXTI_Line15
  17.    
  18.     EXTI_InitStructure.EXTI_Line=0XFF00;//EXTI_Line8|EXTI_Line9|EXTI_Line10|EXTI_Line11|EXTI_Line12|EXTI_Line13|EXTI_Line14|EXTI_Line15;     //將中斷映射到中斷線EXTI_Line12~EXTI_Line15上
  19.     EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;         //設置為中斷模式
  20.     EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //設置為下降沿觸發中斷
  21.     EXTI_InitStructure.EXTI_LineCmd = ENABLE;                           //中斷使能,既開中斷
  22.     EXTI_Init(&EXTI_InitStructure);                                    //根據EXTI_InitStruct中指定的參數初始化外設EXTI寄存器
  23.    
  24.     NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;            //使能按鍵所在的外部中斷通道
  25.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;     //搶占優先級0位
  26.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;             //響應優先級4位,優先級15,為最低優先級
  27.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                    //使能外部中斷通道
  28.     NVIC_Init(&NVIC_InitStructure);                                    //中斷優先級分組初始化
  29.    
  30.     NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;            //使能按鍵所在的外部中斷通道
  31.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;     //搶占優先級0位
  32.     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0f;             //響應優先級4位,優先級15,為最低優先級
  33.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                    //使能外部中斷通道
  34.     NVIC_Init(&NVIC_InitStructure);                                    //中斷優先級分組初始化
  35. }

  36. void EXTI9_5_IRQHandler(void)
  37. {static u8 k1=0,k2=0;     //LED亮和滅狀態,為0是熄滅狀態,為1是點亮狀態
  38.     Delay(20);

  39.     if(KEY1==0)                      //讀取K3按鍵狀態,判斷K1按鍵是否按下
  40.     {
  41.         if(k1==0)
  42.             GPIO_ResetBits(GPIOC,GPIO_Pin_8);
  43.         else
  44.             GPIO_SetBits(GPIOC,GPIO_Pin_8);   
  45.         k1=!k1;
  46.     }
  47.     else if(KEY2==0)        //讀取K4按鍵狀態,判斷K4按鍵是否按下
  48.     {
  49.         if(k2==0)
  50.             GPIO_ResetBits(GPIOC,GPIO_Pin_9);
  51.         else   
  52.             GPIO_SetBits(GPIOC,GPIO_Pin_9);
  53.         k2=!k2;
  54.     }
  55.     //while(KEY1!=1||KEY2!=1);//仿真可以取消
  56.     //EXTI_ClearITPendingBit(EXTI_Line8);
  57.     //EXTI_ClearITPendingBit(EXTI_Line9);
  58. }

  59. void EXTI15_10_IRQHandler(void)
  60. {   
  61.     static u8 k3=0,k4=0,k5=0,k6=0,k7=0,k8=0;     //LED亮和滅狀態,為0是熄滅狀態,為1是點亮狀態
  62.     Delay(20);

  63.     if(KEY3==0)                      //讀取K3按鍵狀態,判斷K1按鍵是否按下
  64.     {
  65.         if(k3==0)
  66.             GPIO_ResetBits(GPIOC,GPIO_Pin_10);
  67.         else
  68.             GPIO_SetBits(GPIOC,GPIO_Pin_10);   
  69.         k3=!k3;
  70.     }
  71.     else if(KEY4==0)        //讀取K4按鍵狀態,判斷K4按鍵是否按下
  72.     {
  73.         if(k4==0)
  74.             GPIO_ResetBits(GPIOC,GPIO_Pin_11);
  75.         else   
  76.             GPIO_SetBits(GPIOC,GPIO_Pin_11);
  77.         k4=!k4;
  78.     }
  79.     else if(KEY5==0)        //讀取K5按鍵狀態,判斷K5按鍵是否按下
  80.     {
  81.         if(k5==0)
  82.             GPIO_ResetBits(GPIOC,GPIO_Pin_12);
  83.         else
  84.             GPIO_SetBits(GPIOC,GPIO_Pin_12);        
  85.         k5=!k5;
  86.     }
  87.     else if(KEY6==0)        //讀取K6按鍵狀態,判斷K6按鍵是否按下
  88.     {
  89.         if(k6==0)
  90.             GPIO_ResetBits(GPIOC,GPIO_Pin_13);   
  91.         else   
  92.             GPIO_SetBits(GPIOC,GPIO_Pin_13);
  93.         k6=!k6;
  94.     }
  95.         else if(KEY7==0)        //讀取K7按鍵狀態,判斷K7按鍵是否按下
  96.     {
  97.         if(k7==0)
  98.             GPIO_ResetBits(GPIOC,GPIO_Pin_14);   
  99.         else   
  100.             GPIO_SetBits(GPIOC,GPIO_Pin_14);
  101.         k7=!k7;
  102.     }
  103.     else if(KEY8==0)        //讀取K7按鍵狀態,判斷K7按鍵是否按下
  104.     {
  105.         if(k8==0)
  106.             GPIO_ResetBits(GPIOC,GPIO_Pin_15);   
  107.         else   
  108.             GPIO_SetBits(GPIOC,GPIO_Pin_15);
  109.         k8=!k8;
  110.     }
  111.     //while(KEY3!=1||KEY4!=1||KEY5!=1||KEY6!=1||KEY7!=1||KEY8!=1);//仿真可以取消
  112.     //EXTI_ClearITPendingBit(EXTI_Line10);
  113.     //EXTI_ClearITPendingBit(EXTI_Line11);
  114.     //EXTI_ClearITPendingBit(EXTI_Line12);
  115.     //EXTI_ClearITPendingBit(EXTI_Line13);
  116.     //EXTI_ClearITPendingBit(EXTI_Line14);
  117.     //EXTI_ClearITPendingBit(EXTI_Line15);
  118. }
復制代碼

所有資料51hei提供下載:
中斷方式的按鍵控制 8按鍵整理.7z (223.04 KB, 下載次數: 67)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:742583 發表于 2020-5-5 15:42 | 顯示全部樓層
下載了后發現是8.7版的嗚嗚嗚
回復

使用道具 舉報

ID:384904 發表于 2020-5-30 10:33 | 顯示全部樓層
試試看
回復

使用道具 舉報

ID:764845 發表于 2020-5-30 14:07 | 顯示全部樓層
可能有用
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区在线免费观看 | 亚洲美女一区 | 99riav国产一区二区三区 | 黄色成人国产 | 免费成人在线网站 | 日韩精品一区二区三区在线观看 | 久久在线| 日韩欧美国产一区二区三区 | 日韩一区二区三区在线视频 | 四虎影院欧美 | 91免费在线 | 91精品国产综合久久久动漫日韩 | www.五月天婷婷.com | 亚洲欧洲精品成人久久奇米网 | 精国产品一区二区三区四季综 | 麻豆亚洲 | 91在线最新 | 成人h免费观看视频 | 青青草一区 | 麻豆久久久久久久久久 | 天天综合网天天综合 | 国产精品呻吟久久av凹凸 | 婷婷丁香综合网 | 亚洲欧洲在线观看视频 | 狠狠做深爱婷婷综合一区 | 欧美极品在线观看 | 成人免费一区二区 | 亚洲一区久久 | 精品国产一级片 | 国产精品一区二区无线 | 久久精品视频12 | 一区二区三区四区在线视频 | 精品久久久久久久久久久久久久久久久 | 国产精品久久久久久久久免费相片 | 久久久精品视频一区二区三区 | 久久精品国产免费 | 欧美国产精品一区二区三区 | 成人在线不卡 | 久久成人国产精品 | 国产精品久久久爽爽爽麻豆色哟哟 | 免费视频一区二区 |