王猛stm32_GPIO接口原理及使用LED流水灯

合集下载

STM32实验-GPIO输出-流水灯实验报告

STM32实验-GPIO输出-流水灯实验报告

课程实验报告学院:专业: 2018年10月18日姓名学号班级指导老师课程名称嵌入式系统原理与应用实验成绩实验名称GPIO输出-流水灯1.实验目的通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。

通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。

2.实验内容工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。

3.实验环境Windouws10 Keil uVision5 4.实验方法和步骤(含设计)(1)实验硬件连接图四个led灯如图连接到GPIO的6~9引脚上。

(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。

(3)实验步骤①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。

②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。

③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。

(4)原函数5.程序及测试结果6.实验分析与体会如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);实验日期: 2018 年 10 月 18 日成绩评定教师签名:年月日Welcome To Download欢迎您的下载,资料仅供参考!。

gpio控制led实验原理

gpio控制led实验原理

gpio控制led实验原理引言:在嵌入式系统中,GPIO(General Purpose Input/Output)即通用输入输出,是一种可以通过软件配置的通用引脚。

通过控制GPIO的电平状态,可以实现对外部设备的控制和数据交换。

本文将介绍如何利用GPIO控制LED灯的原理和实验过程。

一、LED简介LED(Light Emitting Diode)即发光二极管,是一种特殊的半导体器件。

它具有正向电压下发光的特性,被广泛应用于照明、显示和指示等领域。

LED灯通常由发光芯片、封装材料、引线和基板组成。

二、GPIO控制原理1. GPIO引脚的工作方式GPIO引脚可以配置为输入模式或输出模式。

在输入模式下,GPIO 引脚可以读取外部设备的电平状态;在输出模式下,GPIO引脚可以输出高电平或低电平。

2. LED的控制方式LED灯通常通过控制电流来实现亮灭。

当正向电压施加到LED的两端时,LED芯片中的P-N结会发生电子复合,产生光能。

控制LED 灯的亮度可以通过调节电流大小来实现。

3. GPIO控制LED的原理将一个GPIO引脚配置为输出模式,并设置为高电平或低电平,可以通过连接一个适当的电阻和LED灯,将LED灯接在GPIO引脚上。

当GPIO引脚输出高电平时,电流通过电阻和LED灯,LED灯亮起;当GPIO引脚输出低电平时,电流无法通过LED灯,LED灯熄灭。

三、实验过程1. 准备材料准备一块开发板(如树莓派)、一根杜邦线、一个电阻和一个LED 灯。

2. 连接电路将一个杜邦线的一端连接到GPIO引脚,另一端连接到电阻的一端。

将电阻的另一端连接到LED的长脚上,再将LED的短脚连接到开发板的GND引脚上。

3. 编写代码根据开发板的不同,选择相应的编程语言和开发环境。

以Python 语言为例,在树莓派上可以使用RPi.GPIO库来控制GPIO引脚。

编写一个简单的程序,设置GPIO引脚为输出模式,并控制其输出高电平或低电平。

单片机流水灯实验原理

单片机流水灯实验原理

单片机流水灯实验原理
单片机流水灯实验原理:
流水灯是一种基本的电子实验,通过使用单片机控制多个
LED 灯的亮灭来实现灯光在各个灯珠之间流动的效果。

流水
灯实验原理如下:
1. 硬件连接:将多个 LED 灯和适当的电流限制电阻连接到单
片机的不同输出引脚上。

每个 LED 灯的阴极与电流限制电阻
连接到负极(GND),而阳极连接到单片机的 IO 引脚。

需要
注意的是,单片机的 IO 引脚的输出电压应该能够点亮 LED 灯。

2. 软件设计:使用单片机的 GPIO(通用输入输出)功能,设
置相应的输出引脚作为流水灯的控制引脚。

通过对这些引脚进行高低电平控制,实现不同 LED 灯的点亮和熄灭。

3. 流水灯效果:为了实现流水灯的效果,我们将需要在不同的时间间隔内控制不同的 LED 灯点亮。

可以使用一个循环来实
现这种效果,循环中通过更新和改变控制引脚的电平状态来控制流水灯的亮灭顺序。

4. 控制顺序:通过改变控制引脚的电平状态的顺序,可以改变流水灯的流动顺序。

可以通过在循环中使用延迟函数来控制灯的变换速度,或者使用计数器等其他方法来实现更复杂的流水灯效果。

通过以上原理,我们可以实现单片机流水灯实验并观察到灯光在不同的 LED 灯之间流动的效果。

流水灯的原理和应用

流水灯的原理和应用

流水灯的原理和应用1. 概述流水灯是一种常见的电子显示器件,通过多个LED灯依次点亮或熄灭,产生流动效果。

它在电子产品、广告灯箱、装饰灯具等领域被广泛应用。

本文将介绍流水灯的原理和应用。

2. 原理流水灯的原理是通过控制LED灯的亮灭顺序,使得LED灯看起来像是流动的效果。

其基本原理如下:•使用微控制器或其他控制电路对多个LED灯进行顺序控制;•在每个时间段内依次点亮或熄灭相应的LED灯。

3. 原理详解3.1 使用微控制器流水灯通常采用微控制器作为控制核心。

微控制器通过程序控制,依次点亮或熄灭LED灯,实现流动效果。

具体实现过程如下: 1. 初始化:微控制器初始化相关寄存器和引脚,准备控制流水灯的操作;2. 点亮LED灯:根据设定的时间间隔,依次点亮LED灯。

可通过设置引脚的电平来点亮LED灯; 3. 熄灭LED灯:在每个时间段的最后,熄灭之前点亮的LED灯; 4. 更新控制:根据设定的顺序和时间间隔,更新LED灯的选择,继续点亮和熄灭LED灯,形成流动效果。

3.2 使用其他控制电路除了微控制器,还可以使用其他电子电路来实现流水灯的控制。

例如,使用计时器芯片、逻辑门电路等来控制LED灯的亮灭顺序。

具体实现方式根据电路设计的不同而有所不同。

4. 应用流水灯在各个领域都有广泛的应用。

以下是一些常见的应用场景:4.1 电子产品流水灯被广泛应用于电子产品中,如电子表、计算器、音乐节拍器等。

它们可以通过流动的灯光提供更直观的显示效果。

4.2 广告灯箱在广告灯箱中,流水灯被用于制作各种吸引眼球的效果。

通过流动的灯光,可以吸引行人的目光,提高广告的传达效果。

4.3 装饰灯具流水灯还广泛应用于室内外装饰灯具中,如节日装饰、景观照明等。

通过不同的亮灭顺序和颜色变化,营造出独特的氛围效果。

5. 总结流水灯是一种通过控制LED灯的亮灭顺序,产生流动效果的显示器件。

它广泛应用于电子产品、广告灯箱和装饰灯具等领域。

通过使用微控制器或其他控制电路实现LED灯的顺序控制,流水灯可以展现出各种吸引眼球的效果。

基于STM32单片机对流水灯的控制

基于STM32单片机对流水灯的控制

基于 STM32 单片机对流水灯的控制
1.跟着例程自己创建自己的工程时,出现了 GPIO 库文件里有 undefined 等等,在我们刚开始学习新建工程时要注意 C/c++里面的 Defined,与开发板 匹配! 2.在启动文件中选择与开发板匹配的文件,比如 hd,ld,md 等等只要加 入一种,多了会出现错误。 3.终于成功了! 4.出现 Flash download failed cortex M3 注意 Flashdownload 里面关于你芯片 Flash 匹配。 5.今天终于借助于库开发点亮第一个 LED 灯,哈哈。 blog.csdn/hantangsongming/article/details/8139793
blog.sina/s/blog_5e4c7eeb01019gxl.html 本文引用地址: 21ic/app/mcu/201810/781453.htm 6.不过对于寄存器的控制仍然有点问题,明天再搞。 *********************************************************Байду номын сангаас STM32 流水灯实验。 1.通过 GPIO 口函数库实现 LED 的闪灭。 ,晚上和陈辉加一起将 cc3000 入网密码问题解决,可是对于不设定 smartconfig 的密码为何不行还是想不通。。 2.位绑定。有待深入了解。

嵌入式系统——基于Keil5的STM32固件库寄存器编程实现流水灯

嵌入式系统——基于Keil5的STM32固件库寄存器编程实现流水灯

嵌⼊式系统——基于Keil5的STM32固件库寄存器编程实现流⽔灯//PF9-LED0,PF10-LED1//PF13-LED2,PF14-LED3#define rRCCAHB1CLKEN *((volatile unsigned long *) 0x40023830)#define rGPIOF_MODER *((volatile unsigned long *) 0x40021400)#define rGPIOE_MODER *((volatile unsigned long *) 0x40021000)#define rGPIOF_OTYPER *((volatile unsigned long *) 0x40021404)#define rGPIOE_OTYPER *((volatile unsigned long *) 0x40021004)#define rGPIOF_OSPEEDR *((volatile unsigned long *) 0x40021408)#define rGPIOE_OSPEEDR *((volatile unsigned long *) 0x40021008)#define rGPIOF_PUPDR *((volatile unsigned long *) 0x4002140C)#define rGPIOE_PUPDR *((volatile unsigned long *) 0x4002100C)#define rGPIOF_ODR *((volatile unsigned long *) 0x40021414)#define rGPIOE_ODR *((volatile unsigned long *) 0x40021014)#define time 0x300000#define on 1#define off 0void led_init(){//GPIOE -- rRCCAHB1CLKEN[4] GPIOF -- rRCCAHB1CLKEN[5]rRCCAHB1CLKEN |= (1<<4)|(1<<5);//MODER-OUT--01 PF9,PF10 [21:18]<------- 0101unsigned long r_value;r_value = rGPIOF_MODER;//readr_value &= ~(0xf << 18);//clearr_value |= (1 << 18)|(1 << 20);rGPIOF_MODER = r_value;//write//MODER-OUT--01 PF13,PF14 [29:26]<------- 0101r_value = rGPIOE_MODER;//readr_value &= ~(0xf << 26);//clearr_value |= (1 << 26)|(1 << 28);rGPIOE_MODER = r_value;//write//OTYPER-PP--0 PF9,PF10 [10:9]<--------00r_value = rGPIOF_OTYPER;//readr_value &= ~(0x3 << 9);//clearrGPIOF_OTYPER = r_value;//write//OTYPER-PP--0 PF13,PF14 [14:13]<--------00r_value = rGPIOE_OTYPER;//readr_value &= ~(0x3 << 13);//clearrGPIOE_OTYPER = r_value;//write//OSPEEDR- PF9,PF10 [21:18]<-------1010r_value = rGPIOF_OSPEEDR;//readr_value &= ~(0xf << 18);//clearr_value |= (1 << 19)|(1 << 21);rGPIOF_OSPEEDR = r_value;//write//OSPEEDR- PF13,PF14 [29:26]<-------1010r_value = rGPIOE_OSPEEDR;//readr_value &= ~(0xf << 26);//clearr_value |= (1 << 27)|(1 << 29);rGPIOE_OSPEEDR = r_value;//write//PUPDR PF9,PF10 [21:18]<--------0000 r_value = rGPIOF_PUPDR;//readr_value &= ~(0xf << 18);//clearrGPIOF_PUPDR = r_value;//write//PUPDR PF13,PF14 [29:26]<--------0000 r_value = rGPIOE_PUPDR;//readr_value &= ~(0xf << 26);//clearrGPIOE_PUPDR = r_value;//write//ODR PF9,PF10 [10:9]<-------11r_value = rGPIOF_ODR;//readr_value |= (1<<9)|(1<<10);//clearrGPIOF_ODR = r_value;//write//ODR PF13,PF14 [14:13]<-------11r_value = rGPIOE_ODR;//readr_value |= (1<<13)|(1<<14);//clearrGPIOE_ODR = r_value;//write}void led0_ctr(int is_on){unsigned long r_value;r_value = rGPIOF_ODR;r_value |= (1<<9);//clearif(is_on) r_value &= ~(1<<9);rGPIOF_ODR = r_value;}void led1_ctr(int is_on){unsigned long r_value;r_value = rGPIOF_ODR;r_value |= (1<<10);//clearif(is_on) r_value &= ~(1<<10);rGPIOF_ODR = r_value;}void led2_ctr(int is_on){unsigned long r_value;r_value = rGPIOE_ODR;r_value |= (1<<13);//clearif(is_on) r_value &= ~(1<<13);rGPIOE_ODR = r_value;}void led3_ctr(int is_on){unsigned long r_value;r_value = rGPIOE_ODR;r_value |= (1<<14);//clearif(is_on) r_value &= ~(1<<14);rGPIOE_ODR = r_value;}void ledAll_ctr1(int flag){unsigned long r_value;if(flag == 0){//LED0 off, LED1 off, LED2 off, LED3 offled0_ctr(off);led1_ctr(off);led2_ctr(off);led3_ctr(off);}if(flag == 1){//LED0 on, LED1 off, LED2 off, LED3 offled0_ctr(on);led1_ctr(off);led2_ctr(off);led3_ctr(off);}else if(flag == 2){//LED0 on, LED1 on, LED2 off, LED3 off led0_ctr(on);led1_ctr(on);led2_ctr(off);led3_ctr(off);}else if(flag == 3){//LED0 on, LED1 on, LED2 on, LED3 off led0_ctr(on);led1_ctr(on);led2_ctr(on);led3_ctr(off);}else if(flag == 4){//LED0 on, LED1 on, LED2 on, LED3 on led0_ctr(on);led1_ctr(on);led2_ctr(on);led3_ctr(on);}}void delay(int v){while(v--);}int main(){led_init();unsigned int flag = 0;while(1){for (int i=0;i<5;i++){ledAll_ctr1(i);delay(time);}for (int i=3;i>=0;i--){ledAll_ctr1(i);delay(time);}}}。

实验2 GPIO实现LED流水灯

实验2 GPIO实现LED流水灯

实验二IO口实现LED灯闪烁一、实验目的:1.正确安装keil软件2.正确安装调试驱动,熟悉实验板的用法3.学习IO口的使用方法。

二、实验设备:单片机开发板、学生自带笔记本电脑三、实验内容:利用单片机IO口做输出,接发光二极管,编写程序,使发光二极管按照要求点亮。

四、实验原理:1.LPC1114一共有42个GPIO,分为4个端口,P0、P1、P2口都是12位的宽度,引脚从Px.0~Px.11,P3口是6位的宽度,引脚从P3.0~P3.5。

引脚的内部构造如图所示。

其中Rpu为上拉电阻、Rpd为下拉电阻。

2.为了节省芯片的空间和引脚的数目,LPC1100系列微处理器的大多数引脚都采用功能复用方式,用户在使用某个外设的时候,要先设置引脚。

控制引脚设置的寄存器称之为IO配置寄存器,每个端口管脚PIOn_m都分配一个了一个IO配置寄存器IOCON_PIOn_m,以控制管脚功能和电气特性。

3.IOCON_PIOn_m寄存器其位域定义如表所列。

4.各引脚IOCON寄存器的位[2:0]配置不同的值所相应功能。

5.GPIO寄存器GPIO数据寄存器用于读取输入管脚的状态数据,或配置输出管脚的输出状态,表5-5对GPIOnDATA寄存器位进行描述。

GPIO的数据方向的设置是通过对GPIOnDIR寄存器的位进行与或操作实现的,LPC1100微处理器和8051单片机的GPIO不同,在使用前一定要先设置数据方向才能使用,6.发光二级管的工作电压和工作电流如何?___________________________________________________________________________ ___________________________________________________________________________ _________________________________________________________________________。

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统 流水灯、按键、定时器实验报告

嵌入式系统应用实验报告姓名:学号:学院:专业:班级:指导教师:实验1、流水灯实验1.1实验要求编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。

1.2原理分析实验主要考察对STM32F10X系列单片机GPIO的输出操作。

参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空◇输入上拉◇输入下拉◇模拟输入◇开漏输出◇推挽式输出◇推挽式复用功能◇开漏式复用功能根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。

由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。

反之,LED灯熄灭。

1.3程序分析软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。

GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟:RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE);然后配置GPIO输入输出模式:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;再配置GPIO端口翻转速度:GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;最后将配置好的参数写入寄存器,初始化完成:GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

初始化完成后,程序循环点亮一个LED并熄灭其他LED,中间通过Delay()函数进行延时,达到流水灯的效果(程序完整代码见附录3)。

实验程序流程图如下:硬件方面,根据实验指南,将实验板做如下连接:1.3实验结果实验二、按键实验2.1实验要求利用STM32读取外部按键状态,按键按下一次产生一次外部中断在中断处理函数中使按键所对应的灯亮起。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

( 一)
在学习STM32芯片时,首先要接触的第(一)个内容就是对STM32_GPIO接口的配置和使用。

下面以一个LED流水灯的实验来进行说明。

首先看一下LED的原理图:
从图中可以看出4个LED一端分别连接 STM32芯片的PF6\PF7\PF8\PF9四个引脚,另一端共连一高电平,因此,当PF6\PF7\PF8\PF9分别输出低电平时,4 个LED点亮,输出高电平时LED熄灭,图中电阻主要起限流作用,防止LED或GPIO引脚因电流过大而损坏。

LED流水灯就是通过对STM32引脚的配置,将引脚配置成输出(高、低)电平来实现LED灯的亮灭。

程序实现步骤
1、LED.h头文件:主要用来定义各引脚的
规则(1) #ifndef _LED_H /*测试LED.h是否被定义过*/
(2) #define _LED_H /*如果没有定义则定义*/
(3) #endif /*如果定义了,则跳过(2)、(3)直接执
/*行语句(4)、(5)*/
(4)语句………
(5) 语句………
备注:#ifndef与#endif要一起使用,否则可能报错
例:#ifndef _LED_H
#define _LED_H
#include “main.h”(其包含stm32f10x.h)注意位置要在
ifndef,与define后
#define RCC_APB2Periph_LED RCC_APB2Periph_GPIOF /*定义了LED的
使/失能时钟接口,即PF
口*/
#define GPIO_LED GPIOF/*定义LED对应的GPIO组即PF*/
/*定义了每个LED灯对应的引脚名称*/
#define GPIO_DS1_PIN GPIO_Pin_6
#define GPIO_DS2_PIN GPIO_Pin_7
#define GPIO_DS3_PIN GPIO_Pin_8
#define GPIO_DS4_PIN GPIO_Pin_9
#define LED_NUM 4 //定义了LED灯的个数4个
Void Turnon_LED(u8 LED_number);//函数声明
Void Delay(u32 nCount);//函数声明
#endif
自此LED.h文件定义完毕
2、LED.c程序文件:主要实现LED灯的流水闪烁
例:void LED(void)
{ u8 count=0;/*定义一个计数变量
GPIO_InitTypeDef GPIO_InitStructure;/*定义一结构
体用来初始化LED_GPIO
接口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_LED,ENABLE);/*
开启LED的GPIO接口时

/*对各LED所连接的引脚进行配置*/
GPIO_InitStructure.GPIO_Pin = GPIO_DS1_PIN|GPIO_DS2_PIN|
GPIO_DS3_PIN| GPIO_DS4_PIN;
/*选择引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;/设置为
推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHZ;/输出速
率50MHZ,引脚作为输出时,则配置Speed,作为输入用时,可不
必配置
GPIO_Init(GPIOF,&GPIO_InitStructure)/初始化LED_GPIO接

下面就来给各LED对应的引脚配置高、低电平以使其亮、灭。

其中所
用到的库函数为
void GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)/*将引
脚(GPIOx 可为A B C D E /GPIO_Pin 可为0—15)置高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin)/将引
脚置低电平
/*首先将各LED灯的引脚置1关闭所有的LED灯*/
GPIO_SetBits(GPIO_LED,GPIO_DS1_PIN|GPIO_DS2_PIN|
GPIO_DS3_PIN|
GPIO_D4_PIN )
While(1)
{
GPIO_SetBits(GPIO_LED,GPIO_DS1_PIN|GPIO_DS2_PIN|
GPIO_DS3_PIN|
GPIO_D4_PIN )/*关
闭4个 LED灯
Turnon_LED(count%4);/*0.1.2.3.4.分别%4==0,1,2,3,0循环
*/
count++;
Delay(0x2FFFFF);/*转换成十进制为3145727
}
}
Void Turnon_LED(u8 LED_number)
{
switch(LED_number)
{
case 0: GPIO_ResetBits(GPIO_LED,GPIO_DS1_PIN);//点亮DS1
Break;很关键
case 1: GPIO_ResetBits(GPIO_LED,GPIO_DS2_PIN);//点亮DS2
Break;不要忽略
case 2: GPIO_ResetBits(GPIO_LED,GPIO_DS3_PIN);//点亮DS3
Break;重点
case 3: GPIO_ResetBits(GPIO_LED,GPIO_DS4_PIN);//点亮DS4
Break;易错
default:GPIO_ResetBits(GPIO_LED,GPIO_DS1_PIN|GPIO_DS2_PIN|
GPIO_DS3_PIN| GPIO_D4_PIN )/*打开4
个LED灯
}
}
/*延时函数*/
Void Delay(u32 nCount)
{
for(;nCount!=0;nCount--);
}
关于.h 文件,和函数声明的说明
头文件 main.h 包含stm32f10x.h ;a.h, b.h, c.h, d.h, 程序文件 main.c ;a.c,b.c,c.c,d.c
在写a,b,c,d 的.h 头文件时,要包含main.h 因为其可能用到stm32f10x.h 头文件。

在写a,b,c,d 的.c 程序文件时,包含自己的.h 文件就好了.
函数声明时,若一个函数a.c 要用到到b.c 函数,则要在a.h 文件里声明一下b.c 函数,注意函数名、有无返回值等要一致。

同时要注意在写某函数时,无返回值要在前面加void (如:void LED(void))
Keil 软件在用C/C++时要注意最后多出一行,以免有警告出现。

相关文档
最新文档