搞了一晚上+一上午 终于算是入门了 刚刚把LED点亮。。真是费劲啊
吐槽MDK对库函数的封装性。。太扯了 。。所有的固件库函数都要自己手动添加到工程里面去。。还好建好一个模板之后就不用动了(以后直接复制就行了)
首先对于工程模板里的东西,我们要搞明白哪些是需要我们自己去编写的,而哪些是不用动的, 其实初学者应该只需要编写两个文件夹里面的程序:1 USER 文件夹下的主函数
2. HARDWARE (硬件) 里面的硬件设置函数
至于建工程模板我就不赘述了,照着视频或课本建一个备份以后用就可以了
然后就是如何点亮LED并让它交替闪烁了
还是要看一下原理图
可以从开发板上看到两个LED灯分别写了 DS0,DS1 即对应的是LED0 LED1 ,LED0 对应stm32芯片上的PA8 LED1对应stm32芯片上的PD2
接下来写配置 IO的函数
#include "led.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_ist; //配置LED0 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD,ENABLE); //使能PA,PD端口时钟 GPIO_ist.GPIO_Pin=GPIO_Pin_8;//LED0-->PA.8 端口配置 GPIO_ist.GPIO_Mode=GPIO_Mode_Out_PP; //选择推挽输出模式 GPIO_ist.GPIO_Speed=GPIO_Speed_50MHz;//IO的速度设为50MHz GPIO_Init(GPIOA,&GPIO_ist);//¸根据参数初始化GPIOA.8 GPIO_SetBits(GPIOA,GPIO_Pin_8);//将PA.8设置为输出高 //配置LED1 GPIO_ist.GPIO_Pin=GPIO_Pin_2; //LED1-->PD.2 端口配置 GPIO_Init(GPIOD,&GPIO_ist);//¸根据参数初始化GPIOD.2 GPIO_SetBits(GPIOD,GPIO_Pin_2); //将PD.2设置为输出高 }
调好GPIO_InitTypeDef结构体中的3个成员,传参进去设置好初始化函数,看这条语句 GPIO_SetBits(GPIOA,GPIO_Pin_8);//将PA.8设置为输出高
再找到上图DS0 DS1 ,这条语句的作用就是将这两个口的电平初始化为1,(就是说灯最开始是不亮的)
然后看到 #include "led.h"
这个头文件是需要自己写的。。
#ifndef _LED_H #define _LED_H #include "sys.h" #define LED0 PAout(8) //PA 8 #define LED1 PDout(2) //PD 2 void LED_Init(void); #endif
上述代码用到了条件编译,不难。。了解一下就行了 作用是使得在主函数中可以识别LED0 LED1 LED_Init()。。其实就是声明一堆东西
把上面两个文件添加工程中 HARDWARE 文件中,注意要添加"led.h" 的路径
最后写主函数就简单了
#include "led.h" #include "sys.h" #include "delay.h" int main(void) { delay_init(); LED_Init(); while(1) { LED0=0; LED1=1; delay_ms(600); LED0=1; LED1=0; delay_ms(600); } }
"delay.h" 里面主要是延时函数
时间: 2024-10-10 04:26:52