<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          STM32 GPIO應(yīng)用筆記

          作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏

          void LED_TurnOn(u8 led)
          {

          }

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

          main()
          {

          //RCC_Configuration();
          LED_Init();

          while(1)
          {
          GPIO_SetBits(GPIOC, GPIO_Pin_9);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_9);
          Delay(0x8ffff);
          GPIO_SetBits(GPIOC, GPIO_Pin_10);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_10);
          Delay(0x8ffff);
          GPIO_SetBits(GPIOC, GPIO_Pin_11);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_11);
          Delay(0x8ffff);
          GPIO_SetBits(GPIOC, GPIO_Pin_12);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_12);
          Delay(0x8ffff);
          }
          }
          注意:在這里用到了RCC和GPIO的庫函數(shù),所以必須把這兩個(gè)函數(shù)加入工程。

          關(guān)于固件庫函數(shù)在文件夾:C:/Keil/ARM/RV31/LIB/ST/STM32F10x
          為了不在操作過程中避免改變KEIL文件夾下的庫函數(shù),可以固件函數(shù)庫放到其他文件夾下,如:E:/jy/work/STM/WxlStm32/LAB/library
          其中stm32f10x_lib.c文件是整個(gè)庫的一些定義,是必須要的。
          加入后的工程為:

          GPIO庫函數(shù)簡單說明:
          函數(shù)名稱 功能描述
          GPIO_DeInit 重新初始化外圍設(shè)備GPIOx相關(guān)寄存器到它的默認(rèn)復(fù)位值
          GPIO_AFIODeInit 初始化交錯(cuò)功能(remap, event control和 EXTI 配置) 寄存器
          GPIO_Init 根據(jù)GPIO_初始化結(jié)構(gòu)指定的元素初始化外圍設(shè)備GPIOx
          GPIO_StructInit 填充GPIO_初始化結(jié)構(gòu)(GPIO_InitStruct)內(nèi)的元素為復(fù)位值
          GPIO_ReadInputDataBit 讀指定端口引腳輸入數(shù)據(jù)
          GPIO_ReadInputData 讀指定端口輸入數(shù)據(jù)
          GPIO_ReadOtputDataBit 讀指定端口引腳輸出數(shù)據(jù)
          GPIO_ReadOtputData 讀指定端口輸出數(shù)據(jù)
          GPIO_SetBits 置1指定的端口引腳
          GPIO_ResetBits 清0指定的端口引腳
          GPIO_WriteBit 設(shè)置或清除選擇的數(shù)據(jù)端口引腳
          GPIO_Write 寫指定數(shù)據(jù)到GPIOx端口寄存器
          GPIO_ANAPinConfig 允許或禁止 GPIO 4 模擬輸入模式
          GPIO_PinLockConfig 鎖定GPIO引腳寄存器
          GPIO_EventOutputConfig 選擇GPIO引腳作為事件輸出
          GPIO_EventOutputCmd 允許或禁止事件輸出
          GPIO_PinRemapConfig 改變指定引腳的影射
          GPIO_EMIConfig 允許或禁止GPIO 8 和 9 的EMI 模式
          拓展實(shí)驗(yàn):
          在上面LED燈流水顯示的基礎(chǔ)之上加上按鍵程序,首先來看看按鍵的原理圖:

          當(dāng)然這個(gè)原理圖也是相當(dāng)之簡單的,不用讀解釋了,唯一注意的是OK鍵與其他三個(gè)鍵的區(qū)別是按下為高電平,其余三個(gè)按下為低電平。
          加入后的完整清單如下:
          /
          #include "stm32f10x_lib.h"

          GPIO_InitTypeDef GPIO_InitStructure;
          //鍵盤定義
          #define KEY_OK GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)
          #define KEY_DOWN GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1)
          #define KEY_UP GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2)
          #define KEY_ESC GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3)
          //LED初始化
          void LED_Init(void)
          {
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOC, &GPIO_InitStructure);
          }
          //按鍵初始化
          void KEY_Init (void)
          {
          GPIO_InitTypeDef gpio_init;
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
          gpio_init.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
          gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING;
          GPIO_Init(GPIOA, &gpio_init);
          }
          //延遲函數(shù)
          void Delay(vu32 nCount)
          {
          for(; nCount != 0; nCount--);
          }
          //主函數(shù)
          main()
          {
          //RCC_Configuration();
          LED_Init();
          KEY_Init ();

          while(1)
          {
          if(!KEY_ESC)
          {
          while(!KEY_ESC) ;
          GPIO_SetBits(GPIOC, GPIO_Pin_9);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_9);
          Delay(0x8ffff);
          }
          else if(!KEY_UP)
          {
          while(!KEY_UP) ;
          GPIO_SetBits(GPIOC, GPIO_Pin_10);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_10);
          Delay(0x8ffff);
          }
          else if(!KEY_DOWN)
          {
          while(!KEY_DOWN) ;
          GPIO_SetBits(GPIOC, GPIO_Pin_11);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_11);
          Delay(0x8ffff);
          }
          else if(KEY_OK)
          {
          while(KEY_OK) ;
          GPIO_SetBits(GPIOC, GPIO_Pin_12);
          Delay(0x8ffff);
          GPIO_ResetBits(GPIOC, GPIO_Pin_12);
          Delay(0x8ffff);
          }
          }
          }
          該例子是按下不同的按鍵,閃爍對(duì)應(yīng)的LED燈。


          上一頁 1 2 下一頁

          關(guān)鍵詞: STM32GPIO應(yīng)用筆

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();