Để giao tiếp với nút nhấn, chúng ta sử dụng hàm:
GPIO_ReadInputPin(GPIOx, GPIO_PIN_x);Trong đó GPIOx là port cần đọc tín hiệu( A, B, C, D), GPIO_PIN_x là chân có số thứ tự x của port tương ứng.
Sau đây là chương trình mẫu
#include"STM8S_conf.h"
#include"stdio.h"
//***** Dinh nghia co cac chan*****//
#define data (GPIOD)
#define sw (GPIO_PIN_3)
//*****Khai bao bien*****//
unsigned int data_sw;
//*****Ham tao thoi gian tre*****//
void delay(unsigned int timer)
{
while(timer--);
}
//*****Ham doc nut nhan******//
void Read_sw(void)
{
data_sw = GPIO_ReadInputPin(GPIOC,sw);
if(data_sw==0)
{
delay(60000);
if(data_sw==0)
{
GPIO_WriteLow(GPIOD,GPIO_PIN_4);
}
}
else
GPIO_WriteHigh(GPIOD,GPIO_PIN_4);
}
void clk_config(void)
{
CLK_DeInit();
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//cau hinh tan so xung noi HSI/1=16MHZ
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);// xung cpu=HSI/1=16MHZ
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET);
}
void main(void)
{
clk_config();
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_HIGH_FAST);
GPIO_DeInit(GPIOC);
GPIO_Init(GPIOC,GPIO_PIN_3,GPIO_MODE_IN_FL_NO_IT);
while(1)
{
Read_sw();
}
}
hay
ReplyDeletehello wold
ReplyDelete