• 大小: 4KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: 其他
  • 标签: STM32  4*4按键  

资源简介

在STM32F103ZET6上实现了 4*4按键,可以直接使用

资源截图

代码片段和文件信息

#include “stm32f10x_lib.h“
#include “Delay.h“
#include “usart.h“



void RCC_Configuration(void);
void NVIC_Configuration(void);
unsigned char Get_KeyValue(void);


unsigned char const Key_Tab[4][4]=//键盘编码表
{
  {‘1‘‘2‘‘3‘‘4‘}
  {‘5‘‘6‘‘7‘‘8‘}
  {‘9‘‘0‘‘A‘‘B‘}
  {‘C‘‘D‘‘E‘‘F‘}
};

void main(void)

  unsigned char i;
  RCC_Configuration();
  NVIC_Configuration();

  USART1_Config();

  while (1)
  {
    i=Get_KeyValue();
    if(i!=0)//有按键按下
      USART1_Putc(i);
   
  }
}

/*******************************************************************************
* 函数  : void RCC_Configuration(void)
* 功能  : 配置不同的系统时钟
* 参数  :无
* 返回  :无
*******************************************************************************/
void RCC_Configuration(void)
{
  ErrorStatus HSEStartUpStatus;
  
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();

  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
 
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1); 
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1); 

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);

    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1 RCC_PLLMul_9);

    /* Enable PLL */ 
    RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
}

//没有得到键值返回0,否则返回相应的键值
unsigned char Get_KeyValue(void)//使用PA0~PA7
{//使用线反转法
  GPIO_InitTypeDef GPIO_InitStructure;
  
  u8 i=5j=5;
  u16 temp1temp2;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA ENABLE);
  
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;

评论

共有 条评论