芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

飞芯科技-芯片解密|单片机解密|IC解密|芯片破解|芯片复制| PCB抄板|软件开发

芯片解密STM32之按键

芯片解密先是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);
}
}


联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.feixindz.com
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信