1.推挽输出 适合做一些开关控制,应为推挽输出可以快速的切换0和1,例如继电器,led等
2./sys.h 今天我们来讲讲这个头文件/
#ifndef __SYS_H //头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个
#define __SYS_H
#include “stm32f10x.h”//核内外设访问层Core Peripheral Access Layer(CPAL)的头文件,它定义了许多外设要用到的头文件信息,接下来我们会讲解的。
u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;
if(mode)key_up=1; 如果mode等于1 那么每次key_up都是1 即上一次的都是低电平 导致每次按下去都是有效的
if(key_up&&(KEY0==0||KEY1==0||WK_UP==1))//如果不支持连按那么上一次的值与static保留的值有关系
{
delay_ms(10);
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES;
}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;
return 0;
两种情况 一种是支持连续按 意思就是当我这次按了以后他和上次是没有关系的 比如遥控器我连续按了十次就相当于我前进了十个频道
}
在头文件中加入#ifndef或#ifdef等宏定义,是为了防止重复声明。
我们知道,头文件一般是用来声明的,会被其他的源文件和头文件include,当被多个文件include的时候就会造成重复声明。 为了使得只声明一次,引入前面所说的宏定义,一般以文件名大写和_来当宏的名字。
这个宏是给预处理器用的,通常预处理变量用大写,所以这些宏定义都用大写。为了方便,一般将大写的文件名作为预处理器变量,其实在#ifndef后面加什么都都可以,用文件名只是为了好区分。它只是用来定义一个预处理器变量。