stc32G库函数(一)——点亮led

这篇文章是基于上一篇文章创建的工程来继续开发的,有兴趣的小伙伴可以先去看一看上一篇——创建stc32G库函数版本的keil项目。

首先,我们先打开Driver\src中的STC32G_GPIO文件看一下,我们可以看到,在这个文件中只有一个函数,有了解过STC32G12K128这款芯片的都知道,他有四个输出方式,分别是:上拉准双向口(8051传统I/O口),浮空输入,开漏输出,推挽输出。重新看一下这个函数:

u8	GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)

这个函数有两个参数,第一个参数为以下七个中的一个:

#define	GPIO_P0			0		//
#define	GPIO_P1			1
#define	GPIO_P2			2
#define	GPIO_P3			3
#define	GPIO_P4			4
#define	GPIO_P5			5
#define	GPIO_P6			6
#define	GPIO_P7			7

第二个参数为自定义的结构体:

typedef struct
{
	u8	Mode;		//IO模式,  		GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
	u8	Pin;		//要设置的端口	
} GPIO_InitTypeDef;

Mode:

#define	GPIO_PullUp		0	//上拉准双向口
#define	GPIO_HighZ		1	//浮空输入
#define	GPIO_OUT_OD		2	//开漏输出
#define	GPIO_OUT_PP		3	//推挽输出

Pin:

#define	GPIO_Pin_0		0x01	//IO引脚 Px.0
#define	GPIO_Pin_1		0x02	//IO引脚 Px.1
#define	GPIO_Pin_2		0x04	//IO引脚 Px.2
#define	GPIO_Pin_3		0x08	//IO引脚 Px.3
#define	GPIO_Pin_4		0x10	//IO引脚 Px.4
#define	GPIO_Pin_5		0x20	//IO引脚 Px.5
#define	GPIO_Pin_6		0x40	//IO引脚 Px.6
#define	GPIO_Pin_7		0x80	//IO引脚 Px.7
#define	GPIO_Pin_LOW	0x0F	//IO低4位引脚
#define	GPIO_Pin_HIGH	0xF0	//IO高4位引脚
#define	GPIO_Pin_All	0xFF	//IO所有引脚

找到了这个函数的用法和要输入的参数后,就可以调用它了,首先需要先创建两个新文件:led.c、led.h,由于我用的板子led灯接的引脚是P10,所以我这里初始化引脚为P10,初始化函数如下:

void LED_Init(void)
{
#if 0
	GPIO_InitTypeDef  GPIO_InitStructure;
	GPIO_InitStructure.Mode=GPIO_PullUp;
	GPIO_InitStructure.Pin=GPIO_Pin_0;
	
	GPIO_Inilize(GPIO_P1,&GPIO_InitStructure);

#else
	P1_MODE_IO_PU(GPIO_Pin_0);
	
#endif
}

 由于要用到延时,所以要包含STC32G_Delay.h这个头文件。头文件如下:

#include "STC32G_Delay.h"
#include "config.h"
#include "led.h"
 
void main()
{
	WTST = 0;		//设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
	EAXSFR();		//扩展SFR(XFR)访问使能 
	CKCON = 0;      //提高访问XRAM速度
	
	LED_Init();
	
	while(1)
	{
		P10=~P10;
		delay_ms(500);
	}
}

如此可实现led灯的闪烁。工程文件放在资源,有兴趣的小伙伴可以自行下载。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值