工程创建
- 复制 APM32 点亮LED 工程,将江科大的按键函数文件复制放入 hardware 文件夹,打开工程,将文件添加到工程中;
程序修改
- 修改 key文件,如下所示,修改后编译无报错;
#include "key.h"
#include "led.h"
void key_init(void)
{
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);
GPIO_Config_T configStruct;
configStruct.pin = GPIO_PIN_0|GPIO_PIN_1;
configStruct.mode = GPIO_MODE_IN_PU;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOA, &configStruct);
}
uint8_t key_getnum(void)
{
uint8_t keynum=0;
if(GPIO_ReadInputBit(GPIOA,GPIO_PIN_0)==0) //判断按键是否按下
{
Delay_ms(10);
while(GPIO_ReadInputBit(GPIOA,GPIO_PIN_0)==0);
keynum=1;
}
if(GPIO_ReadInputBit(GPIOA,GPIO_PIN_1)==0)//判断按键是否按下
{
Delay_ms(10);
while(GPIO_ReadInputBit(GPIOA,GPIO_PIN_1)==0);
keynum=2;
}
return keynum;
}
void key_led(void)
{
if(key_getnum() ==1)
LED1_on();
if(key_getnum() ==2)
LED1_off();
}
#ifndef __KEY_H__
#define __KEY_H__
#include "apm32e10x.h"
#include "apm32e10x_gpio.h"
#include "apm32e10x_rcm.h"
#include "Delay.h"
uint8_t key_getnum(void);
void key_init(void);
void key_led(void);
#endif
-
主函数添加按键初始化,进行测试
#include "apm32e10x.h" // Device header
#include "Delay.h"
#include "led.h"
#include "buzzer.h"
#include "key.h"
int main (void)
{
key_init();
LED_init();
while(1)
{
key_led();
}
}
红外接收控制蜂鸣器
工程创建
- 复制 APM32 蜂鸣器 工程,将江科大的红外接收函数文件复制放入 hardware 文件夹,打开工程,将文件添加到工程中;
程序修改
- 修改 infrared sensor 文件,如下所示,修改后编译无报错;
#include "infrared sensor.h"
void infraredsensor_init(void)
{
RCM_EnableAPB2PeriphClock(RCM_APB2_PERIPH_GPIOA);
GPIO_Config_T configStruct;
configStruct.pin = GPIO_PIN_1;
configStruct.mode = GPIO_MODE_IN_PU;
configStruct.speed = GPIO_SPEED_50MHz;
GPIO_Config(GPIOA, &configStruct);
GPIO_SetBit(GPIOA,GPIO_PIN_1);
}
uint8_t infraredsensor_get(void)
{
return GPIO_ReadInputBit(GPIOA,GPIO_PIN_1);
}
#ifndef __INFRARED_SENSOR_H__
#define __INFRARED_SENSOR_H__
#include "apm32e10x.h"
#include "apm32e10x_gpio.h"
#include "apm32e10x_rcm.h"
uint8_t infraredsensor_get(void);
void infraredsensor_init(void);
#endif
- 主函数添加红外传感器初始化,进行测试
#include "apm32e10x.h" // Device header
#include "Delay.h"
#include "led.h"
#include "buzzer.h"
#include "key.h"
#include "infrared sensor.h"
int main (void)
{
infraredsensor_init();
buzzer_init();
while(1)
{
if(infraredsensor_get()==0)
{
buzzer_on();
Delay_ms(50);
buzzer_off();
Delay_ms(50);
buzzer_turn();
Delay_ms(50);
buzzer_turn();
Delay_ms(50);
}
else
buzzer_off();
}
}