对于LED灯这个还是比较简单基础的,首先是拿出我们的原理图,来知道我们是要操作那些端口让我们的小灯亮起来,以及高电平亮还是低电平亮。
通过上图,我们可以知道要用到PF11、PF12 和PF15引脚
这个应该是低电平亮,高电平灭,不过这个不重要,到时候看看跑出来的结果就明白了
有了这些理论知识,我们开始
首先要配置外部晶振,我这里是25Mhz的外部晶振。
这里因为我要用到网络部分,所以就先打开了Master Clock Output,因为网络模块没有使用独立的50MHZ晶振,所以使用STM32的MCO2输出50Mhz来驱动网口正常工作,也可以用MCO1。这里的详细倍频分频选择网口模块的配置再详细说明。不需要MCO输出频率的可以不勾选Master Clock Output。
这里也设置一下SYS,虽然没太理解到底干啥,但是有用,应该是中断的时钟,预设一下,别忘记了,这个太容易忘记了。
接下来就是我们一起来找茬,找到我们需要的PF11 PF12 PF15然后选择GPIO_Output就可以了
这里默认的会让小灯初始化之后常亮,这里改不改都行,后面我也会写怎么去修改代码来改变亮灭
这个User Label还是非常有必要的!这个可以让代码中标识的更加清晰,这里一定要定义!
时钟还是老规矩,然后生成文件就可以了,详情的话之前写过,就不写了
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_RESET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED0_GPIO_Port,LED0_Pin,GPIO_PIN_SET);
HAL_Delay(500);
这段代码写到主函数离,因为之前的标签里面修改成了LED0作为标签,所以,这里就可以直接比较直观的拿来使用。
这段的LED0_Pin的重新映射再main.h中定义的,软件自动生成的,想知道GPIO的可以去查看。
这时候烧录进去程序,会发现LED灯初始化后是常亮的,所以我们来看一看这是怎么回事儿
重点在这里,这里设置成GPIO_PIN_SET就是亮,设置成GPIO_PIN_RESET就是灭,这也是为什么我们主程序中用那两句指令控制亮灭。
嗯,LED部分应该就到这里了,下一个,I2C实现EEPROM。