今晚捣鼓了一下触摸按键
代码:
#include "CH57x_common.h"
#include "CH57x_gpio.h"
UINT16 abcBuff[40];
volatile UINT8 adclen;
uint32_t ADCR;
void DebugInit(void)
{
GPIOA_SetBits(GPIO_Pin_9);
GPIOA_ModeCfg(GPIO_Pin_8, GPIO_ModeIN_PU);
GPIOA_ModeCfg(GPIO_Pin_9, GPIO_ModeOut_PP_5mA);
UART1_DefInit();
}
void led_init(void)
{
GPIOB_SetBits( GPIO_Pin_0 );
GPIOB_ModeCfg( GPIO_Pin_0, GPIO_ModeOut_PP_5mA );
}
int main()
{
UINT8 i;
/* ÅäÖô®¿Úµ÷ÊÔ */
DebugInit();
PRINT( "Start @ChipID=%02X\n", R8_CHIP_ID );
/* TouchKey²ÉÑù£ºÑ¡ÔñadcͨµÀ 2 ×ö²ÉÑù£¬¶ÔÓ¦ PA12 */
PRINT( "\n4.TouchKey sampling...\n");
GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeIN_Floating);
TouchKey_ChSampInit();
ADC_ChannelCfg( 2 );
led_init();
R8_ADC_CONVERT|=(1<<0);//Æô¶¯×ª»»
while(1)
{
ADCR=0;
for(i=0; i<16; i++)
{
abcBuff = TouchKey_ExcutSingleConver(0x20); // Á¬Ðø²ÉÑù20´Î
ADCR+=abcBuff;
}
ADCR>>=4;
PRINT("%d\r\n ", ADCR);
if(ADCR<2000)
GPIOB_ResetBits( GPIO_Pin_0 );
else
GPIOB_SetBits( GPIO_Pin_0 );
}
}
void ADC_IRQHandler(void) //adcÖжϷþÎñ³ÌÐò
{
if(ADC_GetITStatus())
{
abcBuff[adclen] = ADC_ReadConverValue();
ADC_StartUp(); // ×÷ÓÃÇå³ýÖжϱêÖ¾²¢¿ªÆôÐÂÒ»ÂÖ²ÉÑù
adclen ++;
}
}
效果图:
|