資源簡介
在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;
評論
共有 條評論