HR8P506,哪里冒出来的SystemInit函数,用库函数点灯again.

上一篇我做了一个电量LED的程序,但是这个程序真的好粗暴,直接是用寄存器操作了,加载的库函数也没有用,,,,,,

那么现在我用库函数再点一次灯,再见


首先,首先,,,一定要说的是,,,

有好奇的同学可能已经把逐个文件打开过了,

在system_HR8P506.c这个文件下,有一个SystemInit函数,.

为什么会有这么一个函数,而且还是空的,,,,


噔噔噔,,,,


好了我就不卖关子了,SystemInit这个函数其实会在Main运行前就会被单片机调用一次,主要是用来写一些用户初始化的东西,

在哪里调用?

在我们伟大的startup_HR8P506.s这个文件上面..

打开文件,在103行.



具体机理我也不解释了,可以自己去百度一下,

解释一下含义就是,当单片机复位时,先调用RegInit这个函数,当然这个函数就在startup_HR8P506.s这个文件里,所以不用纠结,

再下面,就是先调用SystemInit函数,再运行Main函数...


是不是要刷新三观了,哭书上不是说好Main函数是所有程序的总部吗,..


好了,到现在你只要知道SystemInit是在Main函数前面运行的就可以了.,


进入主题,点灯2.0


void SystemInit(void)
{
	GPIO_InitSettingType GPIO_InitTmp;							//定义结构体变量
	GPIO_InitTmp.Func	= GPIO_Reuse_Func0;						//管脚功能定义为功能0
	GPIO_InitTmp.Dir 	= GPIO_Direction_Output;			//设置为输出
	GPIO_InitTmp.DS		= GPIO_DS_Output_Normal;			//普通电流
	GPIO_InitTmp.ODE	= GPIO_ODE_Output_Disable;		//开漏禁止
	GPIO_InitTmp.PDE	= GPIO_PDE_Input_Disable;			//弱下拉禁止
	GPIO_InitTmp.PUE	= GPIO_PUE_Input_Disable;			//弱上拉禁止
	GPIO_InitTmp.Signal = GPIO_Pin_Signal_Digital;	//管脚类型为数字模式
	GPIO_Init(GPIO_Pin_B0,&GPIO_InitTmp);						//初始化管脚
	GPIO_Init(GPIO_Pin_B1,&GPIO_InitTmp);
}

在system_HR8P506.c文件下的SystemInit函数加入这段代码.


int main(void)
{
	while(1)
	{
		GPIO_ToggleBit(GPIO_Pin_B0);				//取反管脚电平
		GPIO_ToggleBit(GPIO_Pin_B1);
		Delay(0xfff);
	}
}

main函数直接这样就好了,,,不用调用SystemInit~~~


编译,下载,,OK,灯亮依旧....

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值