例程-拨码
//main.cpp
#include "zf_common_headfile.h"
#pragma section all "cpu1_dsram"
#define LED1_ON() gpio_set_level(P21_4,0)
#define LED2_ON() gpio_set_level(P21_5,0)
#define LED3_ON() gpio_set_level(P20_8,0)
#define LED4_ON() gpio_set_level(P20_9,0)
#define LED1_OFF() gpio_set_level(P21_4,1)
#define LED2_OFF() gpio_set_level(P21_5,1)
#define LED3_OFF() gpio_set_level(P20_8,1)
#define LED4_OFF() gpio_set_level(P20_9,1)
void led_init()
{
gpio_init(P21_4, GPO, 1, GPO_PUSH_PULL);
gpio_init(P21_5, GPO, 1, GPO_PUSH_PULL);
gpio_init(P20_8, GPO, 1, GPO_PUSH_PULL);
gpio_init(P20_9, GPO, 1, GPO_PUSH_PULL);
}
// **************************** 代码区域 ****************************
void core1_main(void)
{
disable_Watchdog(); // 关闭看门狗
interrupt_global_enable(0); // 打开全局中断
// 此处编写用户代码 例如外设初始化代码等
switch_init();
led_init();
// 此处编写用户代码 例如外设初始化代码等
cpu_wait_event_ready(); // 等待所有核心初始化完毕
while (TRUE)
{
// 此处编写需要循环执行的代码
//方式一:正常函数获取
if(Switch_Get(SWITCH_1) == SWITCH_ON) LED1_ON();
if(Switch_Get(SWITCH_2) == SWITCH_ON) LED2_ON();
if(Switch_Get(SWITCH_3) == SWITCH_ON) LED3_ON();
if(Switch_Get(SWITCH_4) == SWITCH_ON) LED4_ON();
//方式二:宏定义型函数获取
if(!GET_SWITCH1()) LED1_OFF();
if(!GET_SWITCH2()) LED2_OFF();
if(!GET_SWITCH3()) LED3_OFF();
if(!GET_SWITCH4()) LED4_OFF();
}
}
#pragma section all restore
//switch.h
#ifndef CODE_SWITCH_H_
#define CODE_SWITCH_H_
#include "zf_common_headfile.h"
#include "zf_driver_gpio.h"
#define GET_SWITCH1() !gpio_get_level(P20_6)
#define GET_SWITCH2() !gpio_get_level(P20_7)
#define GET_SWITCH3() !gpio_get_level(P11_2)
#define GET_SWITCH4() !gpio_get_level(P11_3)
//开关端口的枚举
typedef enum
{
SWITCH_1,
SWITCH_2,
SWITCH_3,
SWITCH_4,
SWITCH_MAX,
} SWITCH_e;
typedef enum
{
SWITCH_ON = 0, //拨码开启时对应电平
SWITCH_OFF = 1, //拨码关闭时对应电平
} SWITCH_STATUS_e;
typedef enum
{
VHIGH = 0,
VMEDIUM,
VLOW,
}VOICE_TYPE_e;
/*
* 供外部调用的函数接口声明
*/
void switch_init();
SWITCH_STATUS_e Switch_Get(SWITCH_e key);
#endif /* CODE_SWITCH_H_ */
//switch.c
#include "switch.h"
/* 定义SWITCH编号对应的管脚 */
gpio_pin_enum SWITCH_PTxn[SWITCH_MAX] = {P20_6, P20_7, P11_2, P11_3};
/******************************************************************************
* @brief 初始化switch端口
*****************************************************************************/
void switch_init()
{
uint8 i = SWITCH_MAX;
//初始化全部 按键
while(i--)
{
gpio_init(SWITCH_PTxn[i], GPI, 0, GPO_PUSH_PULL);
}
}
/******************************************************************************
* @brief 获取switch状态
* @param SWITCH_e SWITCH编号
* @return SWITCH_STATUS_e SWITCH状态(SWITCH_ON,SWITCH_OFF)
******************************************************************************/
SWITCH_STATUS_e Switch_Get(SWITCH_e i)
{
if(gpio_get_level(SWITCH_PTxn[i]) == SWITCH_OFF)
{
return SWITCH_OFF;
}
return SWITCH_ON;
}