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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1863|回復: 0
收起左側

STM32之按鍵

[復制鏈接]
ID:107189 發表于 2016-3-4 20:19 | 顯示全部樓層 |閱讀模式
正式開始學習STM32了!!!!!要堅持下去
開發板:基于STM103C8T6的迷你彩屏開發板
燒些工具:Jlink8
學習一個芯片我們大多先以控制它的GPIO口開始的,今天我就開進行按鍵和LED。
這里我利用了網上別人寫的一個SYSTEM文件夾,里面有delay,sys,usart三個子文件夾
這里面是STM103F103C系列的底層驅動函數,以后不再述說。
我的兩個LED接的是PA9,10;兩個按鍵的接的是PA11,12
先上我的代碼
先是led.h
#ifndef LED_H
#define LED_H
#include"sys.h"  //I/O口相關函數的文件
#define LED0 PAout(9)  //PAout是輸出
#define LED1 PAout(10)
void LED_Init(void);
#endif

led.c
#include<stm32f10x_lib.h>
#include"led.h"
void LED_Init(void)
{
RCC->APB2ENR|=1<<2;    //使能PORTA時鐘
GPIOA->CRH&=0xFFFFF00F;   //  清除PA9,10所在口的設置
GPIOA->CRH|=0x00000330;   // 設置PA,9,10推挽輸出
GPIOA->ODR|=1<<9;   //  PA9輸出高
GPIOA->ODR|=1<<10;    //PA10輸出高
}

key.h
#ifndef KEY_H
#define KEY_H
#include"sys.h"
#define KEY0 PAin(11)  //PAin是輸入
#define KEY1 PAin(12)
void KEY_Init(void);  //按鍵初始化函數
u8 KEY_Scan(void); //按鍵檢測函數
#endif

key.c
#include<stm32f10x_lib.h>
#include"key.h"
#include"delay.h"  //延時相關的函數集
void KEY_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA時鐘
GPIOA->CRH&=0XFFF00FFF; //清除設置
GPIOA->CRH|=0X00044000;//設置為浮空輸入,當然這里設置上/下拉輸入也是可以的
}
u8 KEY_Scan(void)
{
static u8key_up=1;//按鍵按松開標志
if(key_up&&(KEY0==0||KEY1==0))
{
  delay_ms(10);//去抖動
  key_up=0;
  if(KEY0==0)
  {
   return1;
  }
  else if(KEY1==0)
  {
   return2;
  }
  
}
elseif(KEY0==1&&KEY1==1)
   key_up=1;   
  
return 0;// 無按鍵按下
}

主函數
#include<stm32f10x_lib.h>
#include"delay.h"
#include"usart.h"
#include"led.h"
#include"sys.h"
#include"key.h"
int main(void)
{
u8 t=0;
Stm32_Clock_Init(9);  //系統是時鐘設置
delay_init(72);   //延時初始化
LED_Init();
KEY_Init();
LED0=1;
LED1=1;
  while(1)
  {
   t=KEY_Scan();//得到鍵值
    if(t!=0)
  {        
   switch(t)
   {   
    case1:
     LED0=!LED0;
     break;
    case2:
     LED1=!LED1;
     break;
  
   }
  }
  else
   delay_ms(10);
}
}

總結:我開始編譯通過,但是燒寫進板子后按鍵視乎不起作用,檢查了半天,看寄存器都對的,后來才發現按鍵的宏定義錯誤了 錯誤:#define KEY0 PAout(11);  正確:#define KEY0PAin(11);因為按鍵是要檢測IO口的狀態故是輸入,而LED類的是輸出,這個需要注意!!!

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区免费在线 | 欧美成人精品二区三区99精品 | 狠狠躁天天躁夜夜躁婷婷老牛影视 | 一区二区福利视频 | 久久久久国 | 亚洲国产伊人 | 水蜜桃亚洲一二三四在线 | 久久免费福利 | 国产一区二区三区四区区 | 久久国产精品72免费观看 | 日韩91 | 一区二区三区四区不卡视频 | 久久久久久免费免费 | 男女午夜免费视频 | 欧美一级特黄aaa大片在线观看 | 午夜噜噜噜 | 成人免费小视频 | 91综合在线视频 | 久热中文字幕 | 在线中文视频 | 在线视频成人 | 久久午夜精品福利一区二区 | 亚洲国产高清在线观看 | 99免费 | 欧美伊人久久久久久久久影院 | 国产日韩免费视频 | 亚洲成人久久久 | 99视频在线 | 亚洲喷水 | 国产欧美精品区一区二区三区 | 国产精品电影在线观看 | 国产成人精品一区二区三区四区 | 日韩一区二区三区在线 | 狠狠爱免费视频 | 孰女乱色一区二区三区 | 在线一区视频 | 日韩中文字幕视频 | 欧美日韩一卡二卡 | 黄a网| 乱码av午夜噜噜噜噜动漫 | 国产免费一区二区三区网站免费 |