实验一:基于STM32F1的流水灯实验(库函数)
参考原子哥学习程序
条件:实验板STM32103ZET6;固件库STM32F10x_StdPeriph_Lib_V3.5.0;环境MDK5;
目的:了解STM32 的 IO 口如何作为输出使用 ;以两个LED灯交替闪烁为目标。
目录:
- 1.新建工程
- 2.硬件连接
- 3.R软件设计
- 3.1test1.c程序
- 3.2 test.h头文件
- 3.3 main.c主函数
- 4.仿真下载
1.新建工程(简单介绍)
新建文件夹“实验一 流水灯”,里面建6个文件夹:CORE ,FWLib,HARDWARE,OBJ,SYSTEM,USER 。并在HARDWARE文件夹下新建文件夹LED。
从固件库选择文件考入上诉文件夹(其中SYSTEM中三个系统文件来自原子哥)。
MDK下新建工程test1,,将添加好文件的文件夹加载到工程中,并添加头文件路径和宏定义:STM32F10X_HD,USE_STDPERIPH_DRIVER。
2.硬件连接
LED0接PA0,LED1接PB1。
3.软件设计
需要编写只有HARDWARE下的test1.c与test1.h两个文件,以及主函数。
3.1test1.c程序主要为了配置端口。程序如下:
#include "test1.h" void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE); //PA、PB时钟使能 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化 GPIO_SetBits(GPIOA,GPIO_Pin_0); //PA.0输出高 //PB.1配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_SetBits(GPIOB,GPIO_Pin_1); }
注:GPIO_SetBits即将对应的IO口置1
GPIO_ResetBits则为置0
3.2 test.h头文件为了定义端口。程序如下:
#ifndef __LED_H #define __LED_H #include "sys.h" #define LED0 PAout(0) // PA0 #define LED1 PBout(1) // PB1 void LED_Init(void); //初始化 #endif
3.3 main.c主函数初始化端口,循环执行。程序如下:
#include "test1.h" #include "delay.h" #include "sys.h" int main(void) { delay_init(); LED_Init(); //死循环 while(1) { LED0=0; LED1=1; delay_ms(300); LED0=1; LED1=0; delay_ms(300); } }
4.仿真无误,下载运行。
附源码: 实验一流水灯
作者: 口袋里的超超
出处:http://www.cnblogs.com/wangguchao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。