stm32跑马灯实验

stm32跑马灯实验
stm32跑马灯实验

详细了解,请点击https://www.360docs.net/doc/3610294230.html,/

跑马灯实验

跑马灯实验是最简单,也是一般最先开始的一个实验,他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的GPIO操作都是以跑马灯为基础进行的。

建议:当该实验顺利完成后,作为一个模板,供以后实验使用,最好把相关的某些代码封装起来,方便其他程序重用和其他功能调试时使用,这样可以确保您可以将精力花费在其他需要实现的功能上,而不是多次写下重复的代码。

实验目的:

1.分析和学习固件库

2.理解固件库的结构

3.通过stm32f10x_gpio.c/.h文件,熟悉GPIO的控制和工作原理

4.对开发板LED灯的再次软件封装

实验要求:

1.利用原理图和固件库的实例,移植开发板LED灯的驱动程序,即自己创建一个LED.c/.h

2.用两种方法实现跑马灯程序:

1.LED驱动

2.直接GPIO寄存器控制

硬件分析:

如上所示,4个LED链接在4个不同管脚上,即GPIOF6,GPIOF7,GPIOF8,GPIOC7.

当这4个管脚被置为低电平时,二极管导通。

通用输入输出接口(GPIO)介绍:

多达112多功能的双向IO口:80%的IO口利用率

所有的IO被分成7个端口,即7组GPIO口(GPIOA..GPIOG);

多达21路模拟输入;

可改变功能引脚(如:USARTx、TIMx、I2Cx、SPIx、CAN、USB等);

多达112个IO口可以设置为外部中断(同时可最多可有16个);

一个IO口可用于将MCU从待机模式唤醒(PA.0);

一个IO口可用作防入侵引脚(PC.13);

标准的I/O口可承受5V;

IO口可以吸收25mA(总共可吸收150mA);

18MHz翻转速度;

可设置输出速度达到50MHz;

使用BSRR和BRR寄存器可对IO口的位进行位设置或清除;

锁定机制可以避免对IO口的寄存器的误写操作:

每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。

除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。

在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。

7组GPIO的端口映射地址为:

#define GPIOA_BASE(APB2PERIPH_BASE+0x0800) #define GPIOB_BASE(APB2PERIPH_BASE+0x0C00) #define GPIOC_BASE(APB2PERIPH_BASE+0x1000) #define GPIOD_BASE(APB2PERIPH_BASE+0x1400) #define GPIOE_BASE(APB2PERIPH_BASE+0x1800) #define GPIOF_BASE(APB2PERIPH_BASE+0x1C00) #define GPIOG_BASE(APB2PERIPH_BASE+0x2000)使用时有如下定义:

#define_GPIO

#define_GPIOA

#define_GPIOB

#define_GPIOC

#define_GPIOD

GPIO寄存器简介

每个GPIO都有7组寄存器

两个32位配置寄存器GPIOx_CRL,GPIOx_CRH,

两个32位数据寄存器GPIOx_IDR和GPIOx_ODR,

一个32位置位/复位寄存器GPIOx_BSRR,

一个16位复位寄存器GPIOx_BRR

和一个32位锁定寄存器GPIOx_LCKR。

在固件库中定义如下:

typedef struct

{

__IO uint32_t CRL;

__IO uint32_t CRH;

__IO uint32_t IDR;

__IO uint32_t ODR;

__IO uint32_t BSRR;

__IO uint32_t BRR;

__IO uint32_t LCKR;

}GPIO_TypeDef;

#ifdef_GPIOA

GPIOA=(GPIO_TypeDef*)GPIOA_BASE;

#endif

/*_GPIOA*/

#ifdef_GPIOB

GPIOB=(GPIO_TypeDef*)GPIOB_BASE;

#endif

/*_GPIOB*/

#ifdef_GPIOC GPIOC=(GPIO_TypeDef*)GPIOC_BASE;

#endif

/*_GPIOC*/

#ifdef_GPIOD GPIOD=(GPIO_TypeDef*)GPIOD_BASE;

#endif

/*_GPIOD*/

#ifdef_GPIOE GPIOE=(GPIO_TypeDef*)GPIOE_BASE;

#endif/*_GPIOE*/

GPIO寄存器工作模式

根据数据手册中列出的每个I/O端口的特定硬件特征,GPIO端口的每个位可以由软件分别配置成多种模式。

共有以下8中模式可以选择:

(1)GPIO_Mode_AIN模拟输入

(2)GPIO_Mode_IN_FLOATING浮空输入

(3)GPIO_Mode_IPD下拉输入

(4)GPIO_Mode_IPU上拉输入

这几种输入电路是用那一种,要根据外围电路来决定。

所谓高阻,可以简单理解为输出端处于浮空状态(没有电流流动),其电平随外部电平高低而定,即门电路放弃对输出端电路的控制。而上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。下拉同理,只不过上拉是对器件注入电流,下拉是输出电流。至于弱上拉和强上拉,只是上拉电阻的阻值不同,没有什么严格区分。简言之,上拉就是在端口没有输入的情况下,将端口的电平稳定在高电平。

(5)GPIO_Mode_Out_OD开漏输出

(6)GPIO_Mode_Out_PP推挽输出

(7)GPIO_Mode_AF_OD复用开漏输出

(8)GPIO_Mode_AF_PP复用推挽输出

I/O口的输出模式下,有3种输出速度可选(GPIO_Speed_2MHz最高输出速率2MHz、GPIO_Speed_10MHz最高输出速率10MHz和GPIO_Speed_50MHz最高输出速率50MHz),

这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关(芯片内部在I/O 口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。

通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。

高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI 性能。

如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。

如:

对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了。

对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。

对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。

除此之外,使用端口设置时,有以下几点需要注意:

GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。

在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。

所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。

GPIO口的配置具有上锁功能,当配置好GPIO口后,可以通过程序锁住配置组合,直到下次芯片复位才能解锁。

在固件库中的定义如下所示:

typedef enum

{

GPIO_Mode_AIN=0x0,

GPIO_Mode_IN_FLOATING=0x04,

GPIO_Mode_IPD=0x28,

GPIO_Mode_IPU=0x48,

GPIO_Mode_Out_OD=0x14,

GPIO_Mode_Out_PP=0x10,

GPIO_Mode_AF_OD=0x1C,

GPIO_Mode_AF_PP=0x18

}GPIOMode_TypeDef;

通常有5种方式使用某个引脚功能,它们的配置方式如下:

1.作为普通GPIO输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时不要使能该引脚对应的所有复用功能模块。

2.作为普通GPIO输出:根据需要配置该引脚为推挽输出或开漏输出,同时不要使能该引脚对应的所有复用功能模块。

3.作为普通模拟输入:配置该引脚为模拟输入模式,同时不要使能该引脚对应的所有复用功能模块。

4.作为内置外设的输入:根据需要配置该引脚为浮空输入、带弱上拉输入或带弱下拉输入,同时使能该引脚对应的某个复用功能模块。

5.作为内置外设的输出:根据需要配置该引脚为复用推挽输出或复用开漏输出,同时使能该引脚对应的所有复用功能模块。

一个I/O端口位的基本结构。如下所示:

当端口配置为输出时:

开漏模式:输出0时,N-MOS导通,P-MOS不被激活,输出0。

输出1时,N-MOS高阻,P-MOS不被激活,输出1(需要外部上拉电路);此模式可以把端口作为双向IO使用。

推挽模式:输出0时,N-MOS导通,P-MOS高阻,输出0。

输出1时,N-MOS高阻,P-MOS导通,输出1(不需要外部上拉电路)。简单来说开漏是0的时候接GND1的时候浮空推挽是0的时候接GND1的时候接VCC 下表为端口模式配置表:

GPIO寄存器使用

必须以字(32位)的方式操作这些外设寄存器。

端口配置低寄存器(GPIOx_CRL)(x=A..E)

31:30,27:26,23:22,19:18,15:14,11:10,7:6,3:2位(CNFy)为:端口配置位(y=0…7)(Port x configuration bits)在输入模式(MODE[1:0]=00)下:

00:模拟输入模式

01:浮空输入模式(复位后的状态)

10:上拉/下拉输入模式

11:保留

在输出模式(MODE[1:0]>00)下:

00:通用推挽输出模式

01:通用开漏输出模式

10:复用功能推挽输出模式

11:复用功能开漏输出模式

详见上面端口模式配置表

29:28,25:24,21:20,17:16,13:12,9:8,5:4,1:0位(MODy)为:端口模式位(y=8…15)(Port x mode bits) 00:输入模式(复位后的状态)

01:输出模式,最大速度10MHz

10:输出模式,最大速度2MHz

11:输出模式,最大速度50MHz

详见上面端口模式配置表

该寄存器的复位值为0X44444444,从上图可以看到,复位值其实就是配置端口为浮空输入模式。从上图还可以得出:STM32的CRL控制着每个IO端口(A~G)的低8位的模式。每个IO端口的位占用CRL的4个位,高两位为CNF,低两位为MODE。这里我们可以记住几个常用的配置,比如0X4表示模拟输入模式(ADC用)、0X3表示推挽输出模式(做输出口用,50M速率)、0X8表示上/下拉输入模式(做输入口用)、0XB表示复用输出(使用IO口的第二功能,50M速率)。

给个实例,比如我们要设置PORTC的11位为上拉输入,12位为推挽输出。代码如下:

GPIOC->CRH&=0XFFF00FFF;//清掉这2个位原来的设置,同时也不影响其他位的设置

GPIOC->CRH|=0X00038000;//PC11输入,PC12输出

GPIOC->ODR=1<<11;//PC11上拉

通过这3句话的配置,我们就设置了PC11为上拉输入,PC12为推挽输出。

端口配置高寄存器(GPIOx_CRL)(x=A..E)

31:30,27:26,23:22,19:18,15:14,11:10,7:6,3:2位(CNFy)为:端口配置位(y=0…7)(Port x configuration bits)在输入模式(MODE[1:0]=00)下:

00:模拟输入模式

01:浮空输入模式(复位后的状态)

10:上拉/下拉输入模式

11:保留

在输出模式(MODE[1:0]>00)下:

00:通用推挽输出模式

01:通用开漏输出模式

10:复用功能推挽输出模式

11:复用功能开漏输出模式

详见上面端口模式配置表

29:28,25:24,21:20,17:16,13:12,9:8,5:4,1:0位(MODy)为:端口模式位(y=8…15)(Port x mode bits) 00:输入模式(复位后的状态)

01:输出模式,最大速度10MHz

10:输出模式,最大速度2MHz

11:输出模式,最大速度50MHz

详见上面端口模式配置表

CRH的作用和CRL完全一样,只是CRL控制的是低8位输出口,而CRH控制的是高8位输出口。

端口输入数据寄存器(GPIOx_IDR)(x=A..E)

IDR是一个端口输入数据寄存器,只用了低16位。该寄存器为只读寄存器,并且只能以16位的形式读出。该寄存器各位的描述如下图所示:

31:16位为保留位,始终读为0

15:0位(IDRy[15:0])为:端口输入数据(y=0…15)(Port input data)位

这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。

要想知道某个IO口的状态,你只要读这个寄存器,再看某个位的状态就可以了。使用起来是比较简单的。

端口输出数据寄存器(GPIOx_ODR)(x=A..E)

ODR是一个端口输出数据寄存器,也只用了低16位。该寄存器虽然为可读写,但是从该寄存器读出来的数据都是0。只有写是有效的。其作用就是控制端口的输出。该寄存器的各位描述如下图所示:

31:16位为保留位,始终读为0

15:0位为(ODRy[15:0]):端口输出数据(y=0…15)(Port output data)位

这些位可读可写并只能以字(16位)的形式操作。对GPIOx_BSRR(x=A…E),可以分别地对各个ODR位进行独立的设置/清除。

端口位设置/清除寄存器(GPIOx_BSRR)(x=A..E)

31:16位(BRy[15:0])为:端口数据清除位(y=0…15)(Port x Reset bit y)

这些位只能写入并只能以字(16位)的形式操作。

0:对对应的ODRy位不产生影响

1:清除对应的ODRy位为0

15:0位(BSy[15:0])为:端口设置位(y=0…15)(Port x Set bit y)

这些位只能写入并只能以字(16位)的形式操作。

0:对对应的ODRy位不产生影响

1:设置对应的ODRy位为1

如果同时设置了BSy和BRy的对应位,BSy位起作用。

端口位清除寄存器(GPIOx_BRR)(x=A..E)

31:16位为:保留位

15:0位(BRy)为:端口数据清除位(y=0..15)Port x Reset bit y

这些位只能写入并只能以字(16位)的形式操作。

0:对对应的ODRy位不产生影响

1:清除对应的ODRy位为0

端口配置锁定寄存器(GPIOx_LCKR)(x=A..E)

当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL,CRH)中相应的4个位。

31:16位为:保留位

16位(LCKK)为:锁键(Lock key)位。该位可随时读出,它只可通过锁键写入序列修改。

0:端口配置锁键位激活

1:端口配置锁键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住。

锁键的写入序列为:写1->写0->写1->读0->读1

最后一个读1可省略,但可以用来确认锁键已被激活。

在操作锁键的写入序列时,不能改变LCK[15:0]的值。操作锁键写入序列中的任何错误都不能激活锁键。

15:0位(LCKy[15:0])为:端口x的锁位y(y=0…15)(Port x Lock bit y)

这些位可读可写但只能在LCKK位为0时写入。

0:不锁定端口的配置

1:锁定端口的配置

AFIO寄存器使用

STM32所有内置外设的外部引脚都是与标准GPIO引脚复用的,例如对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。

注意如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。

复用功能I/O和调试配置(AFIO)

AFIO:alternate-function I/Os

为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其他引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。

详见数据手册RM0008161页

事件控制寄存器(AFIO_EVCR)

31:8位为:保留位。

7(EVOE)位为:允许事件输出位(Event output enable)

该位可由软件读写。当设置该位后,Cortex的EVENTOUT将连接到由PORT[2:0]和PIN[3:0]选定的I/O口。

6:4位(PORT[2:0])为:端口选择位(Port selection)

选择用于输出Cortex的EVENTOUT信号的端口:

000:选择PA

001:选择PB

010:选择PC

011:选择PD

100:选择PE

3:0(PIN[3:0])位为:引脚选择位(Pin selection)

选择用于输出Cortex的EVENTOUT信号的引脚:

0000:选择Px00001:选择Px10010:选择Px20011:选择Px3

0100:选择Px40101:选择Px50110:选择Px60111:选择Px7

1000:选择Px81001:选择Px91010:选择Px101011:选择Px11

1100:选择Px121101:选择Px131110:选择Px141111:选择Px15

复用重映射和调试I/O配置寄存器(AFIO_MAPR)

地址偏移:0x04

复位值:0x00000000

31:27位为:保留位。

26:24位(SWJ_CFG[2:0])为:串行线JTAG配置位(Serial wire JTAG configuration)。

这些位只可由软件写(读这些位,将返回未定义的数值),用于配置SWJ和跟踪复用功能的I/O口。SWJ(串行线JTAG)支持JTAG或SWD访问Cortex的调试端口。系统复位后的默认状态是启用SWJ但没有跟踪功能,这种状态下可以通过JTMS/JTCK 脚上的特定信号选择JTAG或SW(串行线)模式。

000:完全SWJ(JTAG-DP+SW-DP):复位状态;

001:完全SWJ(JTAG-DP+SW-DP)但没有NJTRST;

010:关闭JTAG-DP,启用SW-DP;

100:关闭JTAG-DP,关闭SW-DP;

其它组合:无作用。

23:21位为:保留位。

20位(ADC2_ETRGREG_REMAP)为:ADC2规则转换外部触发重映射位(ADC2external trigger regular conversion remapping)该位可由软件置’1’或置’0’。它控制与ADC2规则转换外部触发相连的触发输入。

当该位置’0’时,ADC2规则转换外部触发与EXTI11相连;

当该位置’1’时,ADC2规则转换外部触发与TIM8_TRGO相连。

19位(ADC2_ETRGINJ_REMAP)为:ADC2注入转换外部触发重映射位(ADC2external trigger injected conversion remapping)该位可由软件置’1’或置’0’。它控制与ADC2注入转换外部触发相连的触发输入。

当该位置’0’时,ADC2注入转换外部触发与EXTI15相连;

当该位置’1’时,ADC2注入转换外部触发与TIM8通道4相连。

18位(ADC1_ETRGREG_REMAP)为:ADC1规则转换外部触发重映射位(ADC1external trigger regular conversion remapping)。

该位可由软件置’1’或置’0’。它控制与ADC2规则转换外部触发相连的触发输入。

当该位置’0’时,ADC1规则转换外部触发与EXTI11相连;

当该位置’1’时,ADC1规则转换外部触发与TIM8_TRGO相连。

17位(ADC1_ETRGINJ_REMAP):ADC1注入转换外部触发重映射(ADC1External trigger injected conversion remapping)该位可由软件置’1’或置’0’。它控制与ADC2注入转换外部触发相连的触发输入。

当该位置’0’时,ADC2注入转换外部触发与EXTI15相连;

当该位置’1’时,ADC1注入转换外部触发与TIM8通道4相连。

16位(TIM5CH4_IREMAP):TIM5通道4内部重映射位(TIM5channel4internal remap)

该位可由软件置’1’或置’0’。它控制TIM5通道4内部映像。

当该位置’0’时,TIM5_CH4与PA3相连;

当该位置’1’时,LSI内部振荡器与TIM5_CH4相连,目的是对LSI进行校准。

15位(PD01_REMAP):端口D0/端口D1映像位,可使端口D0/端口D1映像至OSC_IN/OSC_OUT(Port D0/Port D1mapping on OSC_IN/OSC_OUT)

该位可由软件置’1’或置’0’。它控制PD0和PD1的GPIO功能映像。当不使用主振荡器HSE时(系统运行于内部的8MHz 阻容振荡器),PD0和PD1可以映像到OSC_IN和OSC_OUT引脚。此功能只能适用于36、48和64引脚的封装(PD0和PD1出现在100脚和144脚的封装上,不必重映像)。

0:不进行PD0和PD1的重映像;

1:PD0映像到OSC_IN,PD1映像到OSC_OUT。

14:13位(CAN_REMAP[1:0])为:CAN复用功能重映像位(CAN alternate function remapping)

这些位可由软件置’1’或置’0’,在只有单个CAN接口的产品上控制复用功能CAN_RX和CAN_TX的重映像。

00:CAN_RX映像到PA11,CAN_TX映像到PA12;

01:未用组合;

10:CAN_RX映像到PB8,CAN_TX映像到PB9(不能用于36脚的封装);

11:CAN_RX映像到PD0,CAN_TX映像到PD1。

12位(TIM4_REMAP)为:定时器4的重映像位(TIM4remapping)

该位可由软件置’1’或置’0’,控制将TIM4的通道1-4映射到GPIO端口上。

0:没有重映像(TIM4_CH1/PB6,TIM4_CH2/PB7,TIM4_CH3/PB8,TIM4_CH4/PB9);

1:完全映像(TIM4_CH1/PD12,TIM4_CH2/PD13,TIM4_CH3/PD14,TIM4_CH4/PD15)。

重映像不影响在PE0上的TIM4_ETR。

11:10位(TIM3_REMAP[1:0])为:定时器3的重映像位(TIM3remapping)

这些位可由软件置’1’或置’0’,控制定时器3的通道1至4在GPIO端口的映像。

00:没有重映像(CH1/PA6,CH2/PA7,CH3/PB0,CH4/PB1);

01:未用组合;

10:部分映像(CH1/PB4,CH2/PB5,CH3/PB0,CH4/PB1);

11:完全映像(CH1/PC6,CH2/PC7,CH3/PC8,CH4/PC9)。

重映像不影响在PD2上的TIM3_ETR。

9:8位(TIM2_REMAP[1:0])为:定时器2的重映像为(TIM2remapping)

这些位可由软件置’1’或置’0’,控制定时器2的通道1至4和外部触发(ETR)在GPIO端口的映像。

00:没有重映像(CH1/ETR/PA0,CH2/PA1,CH3/PA2,CH4/PA3);

01:部分映像(CH1/ETR/PA15,CH2/PB3,CH3/PA2,CH4/PA3);

10:部分映像(CH1/ETR/PA0,CH2/PA1,CH3/PB10,CH4/PB11);

11:完全映像(CH1/ETR/PA15,CH2/PB3,CH3/PB10,CH4/PB11)。

7:6位(TIM1_REMAP[1:0])为:定时器1的重映像位(TIM1remapping)

这些位可由软件置’1’或置’0’,控制定时器1的通道1至4、1N至3N、外部触发(ETR)和刹车输入(BKIN)在GPIO端口的映像。

00:没有重映像(ETR/PA12,CH1/PA8,CH2/PA9,CH3/PA10,CH4/PA11,BKIN/PB12,CH1N/PB13,CH2N/PB14,CH3N/PB15);

01:部分映像(ETR/PA12,CH1/PA8,CH2/PA9,CH3/PA10,CH4/PA11,BKIN/PA6,CH1N/PA7,CH2N/PB0,CH3N/PB1);

10:未用组合;

11:完全映像(ETR/PE7,CH1/PE9,CH2/PE11,CH3/PE13,CH4/PE14,BKIN/PE15,CH1N/PE8,CH2N/PE10,CH3N/PE12)。5:4位(USART3_REMAP[1:0])为:USART3的重映像位(USART3remapping)

这些位可由软件置’1’或置’0’,控制USART3的CTS、RTS、CK、TX和RX复用功能在GPIO端口的映像。

00:没有重映像(TX/PB10,RX/PB11,CK/PB12,CTS/PB13,RTS/PB14);

01:部分映像(TX/PC10,RX/PC11,CK/PC12,CTS/PB13,RTS/PB14);

10:未用组合;

11:完全映像(TX/PD8,RX/PD9,CK/PD10,CTS/PD11,RTS/PD12)。

3位(USART2_REMAP)为:USART2的重映像位(USART2remapping)

这些位可由软件置’1’或置’0’,控制USART2的CTS、RTS、CK、TX和RX复用功能在GPIO端口的映像。

0:没有重映像(CTS/PA0,RTS/PA1,TX/PA2,RX/PA3,CK/PA4);

1:重映像(CTS/PD3,RTS/PD4,TX/PD5,RX/PD6,CK/PD7);

2位(USART1_REMAP)为:USART1的重映像位(USART1remapping)

该位可由软件置’1’或置’0’,控制USART1的TX和RX复用功能在GPIO端口的映像。

0:没有重映像(TX/PA9,RX/PA10);

1:重映像(TX/PB6,RX/PB7)。

1位(I2C1_REMAP)为:I2C1的重映像位(I2C1remapping)

该位可由软件置’1’或置’0’,控制I2C1的SCL和SDA复用功能在GPIO端口的映像。

0:没有重映像(SCL/PB6,SDA/PB7);

1:重映像(SCL/PB8,SDA/PB9)。

0位(SPI1_REMAP)为:SPI1的重映像位

该位可由软件置’1’或置’0’,控制SPI1的NSS、SCK、MISO和MOSI复用功能在GPIO端口的映像。

0:没有重映像(NSS/PA4,SCK/PA5,MISO/PA6,MOSI/PA7);

1:重映像(NSS/PA15,SCK/PB3,MISO/PB4,MOSI/PB5)。

外部中断配置寄存器1(AFIO_EXTICR1)

31:16位为:保留位。

15:0位(EXTIx[3:0])为:EXTIx配置位(x=0…3)(EXTI x configuration)这些位可由软件读写,用于选择EXTIx外部中断的输入源。

0000:PA[x]引脚

0100:PE[x]引脚

0001:PB[x]引脚

0101:PF[x]引脚

0010:PC[x]引脚

0110:PG[x]引脚

0011:PD[x]引脚

外部中断配置寄存器2(AFIO_EXTICR2)

31:16位为:保留位。

15:0EXTIx[3:0]位为:EXTIx配置位(x=4…7)(EXTI x configuration)这些位可由软件读写,用于选择EXTIx外部中断的输入源。

0000:PA[x]引脚

0100:PE[x]引脚

0001:PB[x]引脚

0101:PF[x]引脚

0010:PC[x]引脚

0110:PG[x]引脚

0011:PD[x]引脚

外部中断配置寄存器3(AFIO_EXTICR3)

31:16位为:保留位。

15:0EXTIx[3:0]位为:EXTIx配置位(x=8…11)(EXTI x configuration)

这些位可由软件读写,用于选择EXTIx外部中断的输入源。

0000:PA[x]引脚

0100:PE[x]引脚

0001:PB[x]引脚

0101:PF[x]引脚

0010:PC[x]引脚

0110:PG[x]引脚

0011:PD[x]引脚

外部中断配置寄存器4(AFIO_EXTICR4)

31:16位为:保留位。

15:0EXTIx[3:0]位为:EXTIx配置位(x=12…15)(EXTI x configuration)这些位可由软件读写,用于选择EXTIx外部中断的输入源。

0000:PA[x]引脚

0100:PE[x]引脚

0001:PB[x]引脚

0101:PF[x]引脚

0010:PC[x]引脚

0110:PG[x]引脚

0011:PD[x]引脚

GPIO和AFIO寄存器地址映象

AFIO寄存器地址映像和复位值

程序分析:

固件库简介:

STM32F10x固件函数库被压缩在一个zip文件中。解压该文件会产生一个文件夹:STM32F10xFWLib\FWLib,包含如下所示的子文件夹:

文件夹Examples:

文件夹Examples,对应每一个STM32外设,都包含一个子文件夹。这些子文件夹包含了整套文件,组成典型的例子,来示范如何使用对应外设。这些文件有:

readme.txt:每个例子的简单描述和使用说明。

stm32f10x_conf.h:该头文件设置了所有使用到的外设,由不同的“DEFINE”语句组成。

stm32f10x_it.c:该源文件包含了所有的中断处理程序(如果未使用中断,则所有的函数体都为空)。

stm32f10x.it.h:该头文件包含了所有的中断处理程序的原形。

main.c:例程代码注:所有的例程的使用,都不受不同软件开发环境的影响。

文件夹Library:

文件夹Library包含组成固件函数库核心的所有子文件夹和文件

子文件夹inc包含了固件函数库所需的头文件,用户无需修改该文件夹

stm32f10x_type.h:

所有其他文件使用的通用数据类型和枚举。

stm32f10x_map.h:外设存储器映像和寄存器数据结构。

stm32f10x_lib.h:主头文件夹,包含了其他头文件。

stm32f10x_ppp.h:每个外设对应一个头文件,包含了该外设使用的函数原形,数据结构和枚举。-cortexm3_macro.h:文件cortexm3_macro.s对应的头文件。

子文件夹src包含了固件函数库所需的源文件,用户无需修改该文件夹:

stm32f10x_ppp.c:每个外设对应一个源文件,包含了该外设使用的函数体

stm32f10x_lib.c:初始化所有外设的指针

文件夹Project文件夹Project包含了一个标准的程序项目模板,包括库文件的编译和所有用户可修改的文件,可用以建立新的工程。

stm32f10x_conf.h:项目配置头文件,默认为设置了所有的外设。

stm32f10x_it.c:该源文件包含了所有的中断处理程序(所有的函数体默认为空)。

stm32f10x_it.h:该头文件包含了所有的中断处理程序的原形。

main.c:主函数体文件夹EWARM,RVMDK,RIDE:用于不同开发环境使用.

详情查询各文件夹下的文件readme.txt

固件函数库的体系和文件相互包括的联系表示在下表中。每一个外设都有一个对应的源文件:

stm32f10x_ppp.c和一个对应的头文件:stm32f10x_ppp.h。

文件stm32f10x_ppp.c包含了使用外设PPP所需的所有固件函数。提供所有外设一个存储器映像文件stm32f10x_map.h。它包含了所有寄存器的声明,既可以用于Debug模式也可以用于release模式。头文件stm32f10x_lib.h包含了所有外设头文件的头文件。它是唯一一个用户需要包括在自己应用中的文件,起到应用和库之间界面的作用。

文件stm32f10x_conf.h是唯一一个需要由用户修改的文件。它作为应用和库之间的界面,指定了一系列参数。stm32f10x_conf.h参数设置文件,起到应用和库之间界面的作用。用户必

须在运行自己的程序前修改该文件。用户可以利用模

板使能或者失能外设。也可以修改外部晶振的参数。也

可以是用该文件在编译前使能Debug或者release模式。main.c主函数体示例。

stm32f10x_it.h头文件,包含所有中断处理函数原形。

stm32f10x_it.c外设中断函数文件。用户可以加入自己的中断程序代

码。对于指向同一个中断向量的多个不同中断请求,可

以利用函数通过判断外设的中断标志位来确定准确的

中断源。固件函数库提供了这些函数的名称。

stm32f10x_lib.h包含了所有外设的头文件的头文件。它是唯一一个用户

需要包括在自己应用中的文件,起到应用和库之间界面

的作用。

stm32f10x_lib.c Debug模式初始化文件。它包括多个指针的定义,每个

指针指向特定外设的首地址,以及在Debug模式被使能

时,被调用的函数的定义。

stm32f10x_map.h该文件包含了存储器映像和所有寄存器物理地址的声

明,既可以用于Debug模式也可以用于release模式。所

有外设都使用该文件。

stm32f10x_type.h通用声明文件。包含所有外设驱动使用的通用类型和常

数。

stm32f10x_ppp.c由C语言编写的外设PPP的驱动源程序文件。

stm32f10x_ppp.h外设PPP的头文件。包含外设PPP函数的定义,和这些

函数使用的变量。

cortexm3_macro.h文件cortexm3_macro.s的头文件

cortexm3_macro.s Cortex-M3内核特殊指令的指令包装

固件库文件体系结构如下所示:

固件库示例程序:

STM32F10X自带的固件库中有着ST官方编写的跑马灯实例程序,主程序如下所示:

int main(void)

{

/**配置所有未使用的GPIO引脚为模拟输入模式(floating input trigger OFF),这将降低功耗,减少电磁干扰**/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|

RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|

RCC_APB2Periph_GPIOE,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_Init(GPIOD,&GPIO_InitStructure);

GPIO_Init(GPIOE,&GPIO_InitStructure);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|

RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|

跑马灯实验报告.

山西大学数字电子技术基于硬件设计的跑马灯电路 系别:电力工程系 班级:电本1254班 姓名:所谓伊人 学号: 12322454**

一、实验目的 1. 熟悉NE555定时器,计数器CD4017的逻辑特性。 2. 熟悉NE555构成多谐振荡器原理。 3. 设计跑马灯电路并利用Multisim软件仿真电路。 二、实验要求 1. 知道NE555、CD4017的管脚排列顺序。 2. 利用NE555构成多谐振荡器。 3. 知道电阻的主要参数及其标注方法。(见实验指导书116页)。 4. 知道电容器的主要作用。(见实验指导书122页)。 5. 了解有关焊接的知识。 三、实验器材 电路板1块。电容:1μF(1个)。集成芯片:NE555(1个)、CD4017(1个)。电阻:22K?、1K?、500?各一个。二极管:IN4148(8个)、发光二极管(10个)。(自行提供)电池:5V 四、电路的安装 1.555用来定时,用它产生某种方波,相当于有的时钟信号 2.4017是个十进制计数器,按照时钟信号从10个口依次输出 1. 检查集成芯片NE555,CD4017的安装位置有无错误. 2. 检查电解电容的极性有无错误; 3. 检查二极管IN4148及发光二极管的安装方向有无错误; 4. 检查各个电阻的安装是否有误。 5. 检查有无虚焊。 五、电路的调试 1. 电路焊接好后,先将电路板正负端接到直流电压5V及地线处,观察发光二极管是否变亮。 2. 适当改变电位器阻值,观察其对CD4017

循环周期(发功二极管依次循环一周)的影响。 3. 利用秒表记录CD4017一个合适循环周期的时间。(分别测量电阻最大时、最小时、合适时的周期) 附录 1. 跑马灯电路图

跑马灯实验报告

电子系统综合设计报告 学号 201009120229 姓名李文海年级专业 2010级电子信息工程(二) 指导 教师刘怀强 学院理学院 走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会dp-51pro实验仪监控程序下载、动态调试等联机调试功能的使用; 2、理解和学会单片机并口的作为通用i/o的使用; 3、理解和学会单片机外部中断的使用; 4、了解单片机定时器/计数器的应用。 2、实验设备 z pc 机、arm 仿真器、2440 实验箱、串口线。 3、实验内容 z 熟悉 arm 开发环境的建立。 z 使用 arm 汇编和 c 语言设置 gpio 口的相应寄存器。 z 编写跑马灯程序。 5、实验原理 走马灯实验是一个硬件实验,因此要求使用dp-51pro 单片机综合仿真实验仪进行硬件 仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。然后连接仿 真仪,下载监控程序,进行主机与实验箱联机仿真。 为了使单独编译的 c 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规 定一定的规则。atpcs ,即 arm , thumb 过程调用标准(arm/thumb procedure call standard),是 arm 程序和 thumb 程序中子程序调用的基本规则,它规定了一些子程序间调 用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规 则等。 下面结合实际介绍几种 atpcs 规则,如果读者想了解更多的规则,可以查看相关的书 籍。 1.基本 atpcs 基本 atpcs 规定了在子程序调用时的一些基本规则,包括下面 3 方面的内容: (1)各寄存器的使用规则及其相应的名称。 (2)数据栈的使用规则。 (3)参数传递的规则。 相对于其它类型的 atpcs,满足基本 atpcs 的程序的执行速度更快,所占用的内存更少。 但是它不能提供以下的支持: arm 程序和 thumb 程序相互调用,数据以及代码的位置无关 的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的 atpcs 就是在基本 atpcs 的基础上再添加其他的规则而形成 的。其目的就是提供上述的功能。 2.寄存器的使用规则 寄存器的使用必须满足下面的规则: (1) 子程序间通过寄存器 r0~r3 来传递参数。这时,寄存器 r0~r3 可以记作 a0~a3。 被调用的子程序在返回前无需恢复寄存器 r0~r3 的内容。 (2) 在子程序中,使用寄存器 r4~rll 来保存局部变量。这时,寄存器 r4~r11 可以记 作 v1~v8。如果在子程序中使用到了寄存器 v1~v8 中的某些寄存器,子程序进入时必须保

嵌入式操作系统跑马灯实验报告

嵌入式操作系统实验报告 实验题目:实验一 CVT-PXA270的使用及跑马灯实验 专业:计算机科学与技术 班级: 姓名: 学号:

1. 了解Linux下端口编程的方法; 2. 掌握CVT-PXA270下的directio通用端口编程驱动程序的使用; 3. 掌握CVT-PXA270下跑马灯的使用方法。 二、实验内容 1.了解CVT-PXA270的外部结构,以及各端口的使用 2.测试跑马灯状态,使跑马灯程序在Linux系统下运行 3.修改跑马灯程序,使跑马灯呈现出不同的状态 三、实验方案 /* 当前跑马灯状态 */ unsigned char led_status = 0x00; / /******************************************************************** // Function name : delay // Description : delay for a while // Return type : void // Argument : int count ********************************************************************* / void delay(int count) { while(count --); } /* 主函数*/ int Main(int argc, char* argv[]) { while(1) { *((unsigned char *) 0x04005000) = led_status; delay(0xffffff); led_status ++; } return 0; } 四、试验结果 实验箱上的四个跑马灯将不断闪烁,修改程序中delay函数调用的值将变它们显示的速度,值越大,显示越慢。

stm32跑马灯实验

详细了解,请点击https://www.360docs.net/doc/3610294230.html,/ 跑马灯实验 跑马灯实验是最简单,也是一般最先开始的一个实验,他可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的GPIO操作都是以跑马灯为基础进行的。 建议:当该实验顺利完成后,作为一个模板,供以后实验使用,最好把相关的某些代码封装起来,方便其他程序重用和其他功能调试时使用,这样可以确保您可以将精力花费在其他需要实现的功能上,而不是多次写下重复的代码。 实验目的: 1.分析和学习固件库 2.理解固件库的结构 3.通过stm32f10x_gpio.c/.h文件,熟悉GPIO的控制和工作原理 4.对开发板LED灯的再次软件封装 实验要求: 1.利用原理图和固件库的实例,移植开发板LED灯的驱动程序,即自己创建一个LED.c/.h 2.用两种方法实现跑马灯程序: 1.LED驱动 2.直接GPIO寄存器控制 硬件分析:

如上所示,4个LED链接在4个不同管脚上,即GPIOF6,GPIOF7,GPIOF8,GPIOC7. 当这4个管脚被置为低电平时,二极管导通。 通用输入输出接口(GPIO)介绍: 多达112多功能的双向IO口:80%的IO口利用率 所有的IO被分成7个端口,即7组GPIO口(GPIOA..GPIOG); 多达21路模拟输入; 可改变功能引脚(如:USARTx、TIMx、I2Cx、SPIx、CAN、USB等); 多达112个IO口可以设置为外部中断(同时可最多可有16个); 一个IO口可用于将MCU从待机模式唤醒(PA.0); 一个IO口可用作防入侵引脚(PC.13); 标准的I/O口可承受5V; IO口可以吸收25mA(总共可吸收150mA); 18MHz翻转速度; 可设置输出速度达到50MHz; 使用BSRR和BRR寄存器可对IO口的位进行位设置或清除; 锁定机制可以避免对IO口的寄存器的误写操作: 每个GPIO引脚都可以由软件配置成输出(推挽或开漏)、输入(带或不带上拉或下拉)或复用的外设功能端口。多数GPIO引脚都与数字或模拟的复用外设共用。 除了具有模拟输入功能的端口,所有的GPIO引脚都有大电流通过能力。 在需要的情况下,I/O引脚的外设功能可以通过一个特定的操作锁定,以避免意外的写入I/O寄存器。 7组GPIO的端口映射地址为:

跑马灯实验报告.

跑 马 灯 实 验 报 告 姓名: 班级:

跑马灯实验报告 试验目的 1.学习8031内部计数器的使用和编程方法。 2.进一步掌握中断处理程序的编程方法。 3.学习端口的输入输出操作。 实验原理 1、软件流程图: 2.程序设计内容 我们可以运用输出端口指令MOV P1,A 或MOV P1,#DATA ,只要给累加器值 或常数值,然后执行上述的指令,即可达到输出控制的动作。

3、硬件连接图: 4.软件清单 ADR EQU 8000H ORG 0000H LJMP START ORG 001BH LJMP OT1

ORG 00F0H START:MOV TMOD,#10H MOV TL1,#0B0H MOV TH1,#3CH SETB EA SETB ET1 MOV R2,#14H MOV R3,#00H SETB TR1 SJMP $ OT1:CLR TR1 CLR EA MOV TH1,#3CH MOV TL1,#0B0H DJNZ R2,BACK NEXT:MOV R2,#14H MOV DPTR,#0200h MOV A,R3 MOVC A,@A+DPTR MOV DPTR,#ADR MOVX @DPTR,A INC R3 CJNE R3,#08H,BACK SJMP ROUND BACK:SETB EA SETB TR1 RETI ROUND:MOV R3,#00H SJMP BACK ORG 0200H DB 05H,0AH,50H,0A0H,55H,0AAH,0FFH,00H END 5.C语言源程序 #include unsigned char i; unsigned char temp;

走马灯实验报告

电子系统综合设计报告 学号201009120229 姓名李文海 年级专业2010级电子信息工程(二) 指导教师刘怀强 学院理学院

走马灯实验论文--《嵌入式系统技术》 1、实验目的 1、学会DP-51PRO实验仪监控程序下载、动态调试等联机调试功能的使用; 2、理解和学会单片机并口的作为通用I/O的使用; 3、理解和学会单片机外部中断的使用; 4、了解单片机定时器/计数器的应用。 2、实验设备 z PC 机、ARM 仿真器、2440 实验箱、串口线。 3、实验内容 z熟悉A RM 开发环境的建立。 z使用A RM 汇编和C语言设置G PIO 口的相应寄存器。 z编写跑马灯程序。 5、实验原理 走马灯实验是一个硬件实验,因此要求使用DP-51PRO 单片机综合仿真实验仪进行硬件仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。然后连接仿真仪,下载监控程序,进行主机与实验箱联机仿真。 为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。A TPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是A RM 程序和T humb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。 下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书 籍。 1.基本A TPCS 基本A TPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容: (1)各寄存器的使用规则及其相应的名称。 (2)数据栈的使用规则。 (3)参数传递的规则。 相对于其它类型的A TPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。但是它不能提供以下的支持:ARM 程序和T humb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。 而派生的其他几种特定的A TPCS 就是在基本A TPCS 的基础上再添加其他的规则而形成的。其目的就是提供上述的功能。 2.寄存器的使用规则 寄存器的使用必须满足下面的规则:

跑马灯实验报告

基于Proteus 的跑马灯 一、实验目的 1、 掌握Proteus 系统的使用,能够建立、保存,打开和修改文件。 2、 掌握使用各种元器件绘制电路原理图的方法,实现电路的仿真。 二、实验内容 跑马灯电路,即完成P1口上的八个发光二极管循环闪亮。 三、实验程序 ORG 0000H AJMP MAIN ORG 30H MAIN: MOV R2,#16 MOV A,#0FEH LOOP: MOV P1,A LCALL D1 RL A DJNZ R2,LOOP D1: MOV R4,#10 D2: MOV R5,#100 D3: MOV R6,#249 DJNZ R6,$ DJNZ R5,D3 DJNZ R4,D2 RET END 四、实验硬件电路 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C52 R1 10k C1 1nF C2 1nF C3 1uF X1 CRYSTAL D1 LED-BIBY D2 LED-BIBY D3 LED-BIBY D4 LED-BIBY D5 LED-BIBY D6 LED-BIBY D7 LED-BIBY D8 LED-BIBY 23456789 1 RP1 RESPACK-8 五、运行Proteus 仿真结果

嵌入式系统原理实验三跑马灯

实验三跑马灯实验 实验目的: 通过一个经典的跑马灯程序,了解STM32F1 的IO 口作为输出使用的方法。通过代码控制ALIENTEK 战舰STM32 开发板上的两个LED:DS0 和DS1 交替闪烁,实现类似跑马灯的效果 内容要点: 1.硬件设计 本章用到的硬件只有LED(DS0 和DS1)。其电路在ALIENTEK 战舰STM32F103 开发板上默认是已经连接好了的。DS0 接PB5,DS1 接PE5。所以在硬件上不需 要动任何东西。其连接原理图如图: 2.软件设计 跑马灯实验我们主要用到的固件库文件是: stm32f10x_gpio.c /stm32f10x_gpio.h stm32f10x_rcc.c/stm32f10x_rcc.h misc.c/ misc.h stm32f10x_usart /stm32f10x_usart.h 其中stm32f10x_rcc.h 头文件在每个实验中都要引入,因为系统时钟配置函数以及 相关的外设时钟使能函数都在这个其源文件stm32f10x_rcc.c 中。 stm32f10x_usart.h 和misc.h 头文件在我们SYSTEM 文件夹中都需要使用到,所 以每个实验都会引用。 首先,找到之前新建的Template 工程,在该文件夹下面新建一个HARDWARE 的文件夹,用来存储以后与硬件相关的代码,然后在HARDWARE 文件夹下新 建一个LED 文件夹,用来存放与LED 相关的代码。新建led.h和led.c文件, 一个外设对应一个.h和.c文件。 在Manage Components 管理里面新建一个 HARDWARE 的组,并把led.c 加入到这个组里面, 将led.h 头文件的路径加入到工程里面 一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内 容重复引用,一般通过预编译的方式来写头文件。一般的格式如下:

单片机跑马灯实验报告-叶坤

单片机实验报告—Delay函数和中断系统实现跑马灯14级通信2班叶坤学号:201400800679 一、硬件组成介绍 1、最小系统 STC12C5A16S2单片机、开发板、12兆的晶振、电源。 2、其他 共有40个引脚,两个外部中断,两个定时器,一个串行口中断。四个独立按键,四个数码管,一个蜂鸣器,还有一块拓展区域,可作为日后拓展功能使用,开发单片机的更多功能。 二、软件开发流程 1、新建工程 打开Keil软件,点击“Project | New Project…”,弹出一个名为“Create New Project”的对话框。然后选择一个合适的文件夹准备来存放工程文件。 2、选择CPU Keil提示选择CPU 器件。选中ATMEL中的89c52即可。接下来弹出一个对话框。该对话框提示是否要把标准8051 的启动代码添加到工程中去,一般选择“否”。 3、新建一个.c文件 点击新建文件,将文件名改为“text.c”,然后保存在合适的文

件夹里。扩展名“.c”不可省略。 4、添加源程序文件到工程中 一个空的源程序文件“text.c”已经建立,但是这个文件与刚才新建的工程之间并没有什么内在联系,因此我们需要把它添加到工程中去。单击Keil软件左边项目工作窗口“Target 1 ”上的“+”,将其展开。然后右击“Source Group 1”文件夹,会弹出选择菜单。单击其中的“Add Files to Group 'Source Group 1' ”项。这时,对话框内将出现刚才保存过的“text.c”。双击文件“text.c”,这时,源程序文件“text.c ”已经出现在项目工作窗口的“Source Group 1 ”文件夹内。 5、设计和编辑C语言程序 单根据实验要求编辑C语言程序,并且通过反复的编译和调试以确保程序的正确性。编辑“text.c ”文件,然后点击“Project”中的“compile”,根据运行结果调试程序,以达到目的。 6、勾选产生.hex文件 单击Keil C51 工具栏的“”图标,弹出名为“Options for Target ‘Target 1’ ”的对话框。单击“Output”标签页,选中“Create HEX File”项,然后“确定”。 7、仿真调试 用鼠标左键单击菜单命令“Debug”→ “Start/Stop Debug

单片机跑马灯(流水灯)控制实验报告

单片机实验报告 姓名: 学号: 一、 实验实现功能: 1:计数器功能 2:流水灯 二、 具体操作: 1、计数器功能 数码管的动态显示。每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。 2、流水灯 当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。 三、 程序流程图 开始 定时器T0 设置初值,启动定时器, 打开中断 复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开

四、程序 #include typedef unsigned char uint8; typedef unsigned int uint16; //类型定义 sbit P2_1 = P2^1; sbit P2_2 = P2^2; sbit P2_3 = P2^3; sbit P2_4 = P2^4; //位声明四个数码管开关 sbit Key2 = P3^2; sbit Key3 = P3^3; //位声明2个按键K2和K3 sbit Ledk = P2^0 ; //LED 开关 void delay(uint16 i); //延时函数声明 void refresh (); // 数码管刷新函数声明 void liushuideng(); //流水灯函数声明 uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //数码管的真值表 uint8 out[4] = {0}; // 数组变量 uint16 counter=0; //用作计数器的变量 uint16 Time_counter=0; //用作定时器的变量 void main() //主函数 { TMOD = 0x01; //定时器0,工作方式一 TH0 = 0xFC; TL0 = 0x18; //定时器初值使每次循环为1ms TR0 = 0; //定时器0开始作 ET0 = 0; // 定时器中断关 EA = 0; // 关中断 while(1) //计数器模式 { Ledk =1 ; //led开关关 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位 if (!Key2) //计数器加1 { ++counter; //自加 out[0]=number[counter%10]; //取个位 out[1]=number[counter%100/10]; //十位 out[2]=number[counter%1000/100]; //百位 out[3]=number[counter/1000]; //千位

跑马灯报告

淮北师范大学 跑马灯设计 学院计算机科学与技术 专业 11级计算机科学与技术(非师范) 学号 学生姓名 指导教师姓名 2013年11月 24 日

前言 当今的社会科技迅速发展,流水灯在我们生活中有着更多的应用,流水灯控制器在我门日常生活中有重要的运用,如广告牌的设计和节日彩灯的设计都能运用到它的原理。流水灯是一串按一定的规律像流水一样连续闪亮。 流水灯的设计要求在预定的时间到来时,会产生一个控制信号控制LED灯的流向、间歇等,LED灯流向可以随着电路的改变而改变,并具有自控、手控、流向控制功能等。主要参考数字电路中计数器的原理。NE555振荡器的作用等相关知识在设计的过程中需要了解相关芯片(CD4017、NE555)的具体功能,引脚图,真值表,认真布局,在连接过程中更要细致耐心。 这次的设计致力于LED灯的流水设计,使之可以按一定的规律像流水一样连续闪亮。

目录 前言 (2) 1.设计目标 (3) 2.设计思路 (3) 3.正文 (3) 3.1、电路工作原理 (3) 3.2、电子元件介绍及说明 (6) 3.2.1、NE555相关资料 (6) 3.2.2、CD4017相关资料 (8) 3.2.3、LED灯的介绍 (12) 3.3、电路图和实物图 (13) 3.4、材料清单 (14) 4.注意事项 (15) 5.焊接与调试 (16) 6.参考文献 (20) 7.小结 (20)

一、设计目标 1、运用NE555和CD4017芯片设计并且实现跑马灯的设计,使发光二极管可以轮流闪亮,并且要可以控制两个灯之间的闪烁间隔。 二、设计思路 要想实现跑马灯的效果,首先要考虑的是如何让几个灯可以依次有间隔的闪烁,然后在考虑怎样可以使两灯之间的闪烁间隔变大或减小。由此可以以集成电路NE555为核心器件构成自激多谐振荡器,并用CD4017十进制计数器计数器进行计数,从而实现利用CD4017从十个输出端依次输出高电平,不断循环的功能,来使发光二极管可以轮流闪亮。并利用滑动变阻器改变电阻值来改变电压值,从而使两个灯之间的闪烁间隔可以改变。 三、正文 3.1、电路工作原理 先用NE555定时器用来生成脉冲,把脉冲给计数器CD4017,通过CD4017,在时钟脉冲的作用下,CD4017十进制计数器计数器进行计数,并从输出端依次输出高电平,不断循环。就能实现基本电路要求。 555定时器由3个阻值为5kΩ的电阻组成的分压器、两个电压比较器C1和 C2、基本RS触发器、放电三极管TD和缓冲反相器G4组成。虚线边沿标注的数字为管脚号。其中,1脚为接地端;2脚为低电平触发端,由此输入低电平触发脉冲;6脚为高电平触发端,由此输入高电平触发脉冲;4脚为复位端,输入负脉冲(或使其电压低于0.7V)可使555定时器直接复位;5脚为电压控制端,在此端外加电压可以改变比较器的参考电压,不用时,经0.01uF的电容接地,以防止引入干扰;7脚为放电端,555定时器输出低电平时,放电晶体管TD导通,外接电容元件通过TD放电;3脚为输出端,输出高电压约低于电源电压1V—3V,输出电流可达200mA,因此可直接驱动继电器、发光二极管、指示灯等;8脚为电源端,可在5V—18V范围内使用。

STM32跑马灯实验

3.1 跑马灯实验 通过本节的学习,你将了解到STM32的IO口作为输出使用的方法。本节分为如下几个小节: STM32 IO口简介 3.1.1 硬件设计 3.1.2 软件设计 3.1.3 仿真与下载 3.1.4

3.1.1 STM32 IO简介 作为所有开发板的经典入门实验,莫过于跑马灯了。ALIENTEK MiniSTM32开发板板载了2个LED,DS0和DS1,本实验将通过教你如何控制这两个灯实现交替闪烁的类跑马灯效果。 该实验的关键在于如何控制STM32的IO口输出。了解了STM32的IO口如何输出的,就可以实现跑马灯了。通过这一节的学习,你将初步掌握STM32基本IO口的使用,而这是迈向STM32的第一步。 STM32的IO口可以由软件配置成8种模式: 1、输入浮空 2、输入上拉 3、输入下拉 4、模拟输入 5、开漏输出 6、推挽输出 7、推挽式复用功能 8、开漏复用功能 每个IO口可以自由编程,单IO口寄存器必须要按32位字被访问。STM32的很多IO口都是5V兼容的,这些IO口在与5V电平的外设连接的时候很有优势,具体哪些IO口是5V兼容的,可以从该芯片的数据手册管脚描述章节查到(I/O Level标FT的就是5V电平兼容的)。 STM32的每个IO端口都有7个寄存器来控制。他们分别是:配置模式的2个32位的端口配置寄存器CRL和CRH;2个32位的数据寄存器IDR和ODR;1个32位的置位/复位寄存器BSRR;一个16位的复位寄存器BRR;1个32位的所存寄存器LCKR;这里我们仅介绍常用的几个寄存器,我们常用的IO端口寄存器只有4个:CRL、CRH、IDR、ODR。 CRL和CRH控制着每个IO口的模式及输出速率。 STM32的IO口位配置表如表3.1.1.1所示: 表3.1.1.1 STM32的IO口位配置表 STM32输出模式配置如表3.1.1.2所示:

DSP LED跑马灯实验

《DSP技术与实验》实验报告 姓名:学号:学期:

实验名:LED跑马灯 一、实验目的 1.熟悉CCS4集成开发环境 2.掌握CCS4下TMS320VC5509A的编程方法 3.熟悉CSL库的使用 二、实验设备 1.一台装有CCS4软件的计算机 2.HX5509开发板 3.XDS100-USB V1仿真器 三、实验原理 LED实验是一个基础,主要为了熟悉开发环境和5509芯片基本编

程方式。要实现LED跑马灯就首先要对芯片GPIO进行控制,GPIO为General Purpose Input Output 的缩写,即通用输入输出接口。每个GPIO都可以配置为输入或输出。HX5509开发板的LED硬件电路如图一所示。对GPIO控制寄存器IODIP写1就可以设定GPIO为输出,然后对数据寄存器IODATA写1或0就可以控制LED状态。GPIO寄存器表如图二所示。 在TI的5509编程过程中,我们不需要直接对寄存器地址操作,而是可以使用TI官方提供的CSL函数库,即Chip Support Library(片级支持库)。有了它,可以简单方便的完成对DSP器件片上外设配置和控制的编程工作,从而简化了DSP片上外设开发工作,缩短开发周期,并且可以达成标准化控制的编程工作。通过查阅TMS320C55x Chip Support Library API Reference Guide (Rev.G).pdf可知,GPIO操作函数原型为: 而且官方手册中提示REG include the registers IODIR,IOD ATA,GPIODIR,GPIODATA,GPIOEN,AGPIODIR,AGPIODATA,and AGPIOEN。

单片机跑马灯实验分析报告

单片机跑马灯实验报告

————————————————————————————————作者:————————————————————————————————日期:

学号14142200277序号19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间2016年4月2日

一、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。每点亮一个LED ,采用软件延时一段时间。 2、简单键控的流水灯。 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。 3、键控的流水灯。 上电,不点亮LED ,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED 。 二、电路原理图 图1 跑马灯实验电路原理图 XTAL2 18 XTAL1 19 ALE 30EA 31 PSEN 29RST 9 P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51 D0D1D2D3D4D5D6D7 +5V K1K2K3K4

单片机跑马灯实验

实验一、输入输出实验 实验目的: 1、体验单片机的程序编写和运行过程 2、掌握汇编语言的设计编译和运行 实验内容: 用P0端口作输入,P1端口做输出。程序循环从P0端口读入数据,从P1端口输出。输出用LED灯显示。 实验步骤和方法: 1、搭电路。输入端口的6个口接开关接口,输出6个接口接LED灯。 2、编写程序 3、调试程序 实验要求: 1、先用proteus软件搭建电路,编写程序作仿真。 2、在软件里验证好程序再上实验平台验证

I/O实验程序: ORG 0000H MAIN: MOV P0,#0FFH LOOP: MOV A,P0 MOV P1,A LJMP LOOP END

实验二、跑马灯实验目的: 1、掌握单片机的输出 2、掌握子程序的调用方法 3、掌握定时的设置方法 实验内容: 8个LED灯轮流点亮,点亮间隔为1秒。 定时方法采用子程序调用,延时子程序已经编写好。实验步骤和方法: 1、搭电路。P1作输出端口,接LED灯。 2、编写程序 3、调试程序 实验要求: 1、先用proteus软件搭建电路,编写程序作仿真。 2、在软件里验证好程序再上实验平台验证。 附:延时子程序 DELAY: M OV R3,#20 ;延时0.2s D1: MOV R4,#20 D2: MOV R5,#248 DJNZ R5,$ DJNZ R4,D2 DJNZ R3,D1 RET

跑马灯延时子程序 ORG 00H JMP MAIN ORG 30H MAIN: MOV A,#0FFH CLR C MOV R2,#08H ;循环八次LOOP: RLC A ;带进位左移 MOV P2,A MOV R7,#05H LOOP1: CALL DELAY DJNZ R7,LOOP1

LED跑马灯实验-库函数

LED跑马灯实验

修改记录 审核记录

LED跑马灯 1.1 实验介绍 GPIO即通用可编程输入输出口,在此我们通过GPIO编程实现一个跑马灯的实验。该跑马灯实验是最简单,也是一般最先开始的一个实验,它可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的 GPIO 操作都是以跑马灯为基础进行的。 1.2 实验目标 1. 理解固件库的结构 2. 分析和学习固件库 3. 灵活运用 GPIO 1.3 实验时间 60分钟 1.4 预备知识 熟悉C语言知识,熟练MDK的使用 1.5 实验步骤 1.解压stm32f10x_stdperiph_lib.zip可以从ST官方网站免费下载。本教程使用的标准库版本为 3.1.2 2.创建一个GPIO文件夹

2.1 新建子文件夹User,用于存放用户源程序 2.2 新建子文件夹Project,用户KEIL工程文件 2.3 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。 3. 复制源代码到GPIO文件夹 3.1 将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2\Libraries文件夹和Utilities文件夹整体复制到GPIO文件夹下。这就是ST的标准库,是以源代码形式提供的。 3.2 将库中的演示代码\GPIO\labsolutions\4GPIO_fuction\User中的文件复制到GPIO\User 文件夹. 4. 新建Keil MDK工程

单片机跑马灯实验报告

2010年中职骨干教师国家级培训 单片机焊接与调试 实验报告 学员姓名:王军朝 专业:电子电器应用与维修 单位:山西省临猗县第一职业中学 时间:2010年7月23日

实验一熟悉最小单片机组装及keil的使用 实验题目: 用P1口的P1.0~P1.3作为输入,读取开关K0~K3上的数据,用P1.4~P1.7作为输出,控制发光二极管L0~L3。设晶振频率 fosc=12MHz,为更好的观察实验现象,要求程序在延时1S后再执行下一条。 实验目的:熟悉最小单片机组装及STC ISP和keil软件的使用,并进行调试。 实验内容:最小单片机的组装与焊接,熟悉实验环境,掌握keil 的使用方法;建立工程,编程,调试并运行程序。 基本要求:能够在计算机上使用相应的软件建立一个工程,应用简单指令编写简单的程序进行编译,并在实验板上调试成 功。 实验工具: 1、单片机测试平台:PC机,串口线,并口线,单片机开发板。 2、软件:keil51测试软件,STC软件,串口调试软件,定时器 /计数器初值测试软件。 3、万用表,尖嘴钳,斜口钳,镊子,剪刀,螺丝刀(十字/一 字),电烙铁,烙铁架,松香,焊锡,清洁棉,工具箱。 电路原理:

程序流程: 实现小灯随开关闭合亮的程流程图 实验步骤:

1、应的元件组装最小单片电路 成果图 2、进行编程 ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#60H ;主程序开始,设置堆栈SP为60H MOV A,#0FH MOV P1,A ;数据送P1口,设置P1.0~P1.3为输入NEXT:MOV A,P1 ;读K0~K3上的数据 SWAP A ;A的低4位与高4位交换 ORL A,#0FH ;A的高4位不变,低4位为全1 MOV P1,A ;送数据到L0~L3,设置P1.0~P1.3为输入LCALL DELAY ;调用延时子程序 LJMP NEXT ;循环

实验四 LED跑马灯

实验四LED跑马灯实验 一、实验目的: 1、掌握EXYNOS 4412处理器与LED指示灯的电路原理。 2、掌握linux驱动对EXYNOS 4412 GPIO的控制原理及使用方法。 二、实验设备: TINY4412开发板、学生自带笔记本、USB转串口线、电源、网线。 三、实验地点及时间 地点:A2-303a 时间:教学周第八周 四、实验内容: 1、在ARM开发板上面,在驱动程序中利用linux定义的GPIO M4口编写对应管脚电 平控制程序,并进行测试验证所学内容。 2、在ARM开发板上面,在上面程序的基础上采用动态IO映射的方法,编写程序,并 进行测试验证所学内容。 3、在ARM开发板上面,在驱动程序中利用内核定时器,编写程序,并进行测试验证 insmod module后LED跑2圈的结果。 4、在ARM开发板上面,利用2的驱动程序,编写应用程序测试验证LED跑马灯的结 果。 五、实验原理: 1、GPIO端口原理 EXYNOS 4412有300多个输入/输出端口,这些端口都具有多功能,通过引脚配置寄存器,可以将其设置为所需要的功能,如:I/O功能、中断功能等等。大多数采用EXYNOS 4412的典型LED指示灯电路设计基本都使用M4口(GPM4 共8个输入/输出口)作为其控制端口。 端口寄存器及引脚配置

每一个端口都有6个寄存器,它们是:引脚配置寄存器、数据寄存器、引脚上拉寄存器等。 端口M4引脚配置寄存器GPM4CON 0x110002E0 Base Address: 0x1100_0000 Address = Base Address + 0x02E0, Reset Value = 0x0000_0000

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

3. 实验环境 WindouwslO Keil uVision5 课程实验报告 学院: ___________________ 专业: ______________ 2018年10月18日

4. 实验方法和步骤(含设计) 上。 (1 )实验硬件连接图 四个led灯如图连接到GPIO的6~9引脚(2)软件分析 使用到的GPIO端口需配置为输出模式,推挽(PP)模式输出,I0 口速度为50MHz (3 )实验步骤 ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。 ②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。 ③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。 (4)原函数 1 itinclude "led.h" 2 B/* 3 ( 1 )紺始牝GF IOC 的口 4 (2)定义延时蓟数 s — 6 void LEDInit(void) 7 0( 8 GPIOInitTypeDef GPIOInitStructurp; 9 RCC_APB2PeriphC 1 ockCmd(RCC_APB2P e riph_GPIOC, EWWLEJi 使隘P匚正时禅IS GPI0_ln 1 tStrut t urt.GFI0_Pin - GPI0_Pin_&\GPI0_Pin_7^GPI0_Pin_fl[GP 10_Pin_9; "PC飞濟口配匡 11 GPIOIni 稚冃辎出 12 GP Z0 I nitstrueture. GPIC^Speed - GPIO_Speed_56*Xz; //IO □谨复为50rKz

单片机跑马灯实验报告

单片机跑马灯实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

学号序号 19 单片机原理与接口技术 实验报告 实验项目序号一 实验项目名称跑马灯实验 姓名卢志雄专业电子信息工程班级电信14-2BF 完成时间 2016年4月2日

一、实验内容 实验内容为3项,其中第1、2项必做。 1、基本的流水灯。 根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、 D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、 D3……D8、D1……,循环点亮。每点亮一个LED,采用软件延时一段时间。 2、简单键控的流水灯。 不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。松手后,又按正序点亮流水灯。 3、键控的流水灯。 上电,不点亮LED,按一下K1键,按正序点亮流水灯。按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。 二、电路原理图

图1 跑马灯实验电路原理图三、程序流程图 图2 简单键控的流水灯程序流程图

四、源程序 1、基本的流水灯 #include<> #define uint unsigned int #define uchar unsigned char void delay( j ) //延时函数 data uint j; { data uint i; while(j--) for(i=0;i<250;i++); } void main( ) //主函数 { data uchar a; a=1; //保证只有一个点亮 while(1) //不断循环 { P2=~a; //低电平点亮 a=a<<1; //左移一位,右补0 if(a==0)a=1; //全0 delay(2250);} //流动点亮延时 } 2、简单键控的流水灯

走马灯实验报告

并行IO接口实验 实验报告 专业:电子信息工程 班级:卓越1201班 学号:U201213500 姓名:钟远维

一、实验目的 1.掌握GPIO IP核的工作原理和使用方法 2.掌握中断控制方式的IO接口设计原理 3.掌握中断程序设计方法 4.掌握IO接口程序控制方法 -------查询方式 -------延时方式 二、实验任务 写一个Led走马灯输出的程序,并下载到FPGA板子上。用延时、中断两种方式实现。 三、实验原理 硬件实现框图如图所示:

四、硬件实现步骤 1.使用XPS创建一个基于AXI总线的最小计算机系统。 File –> New BSB Project,如图: 2.修改时钟设置:将时钟产生器的时钟输入信号进行修改,修改为单一时 钟源。 修改后的结果如图:

3.添加GPIO IP核,设置LEDs_8Bits配置: a.在IP Catalog标签中,双击下面图标创建GPIO IP核: b.添加GPIO IP核后,将名字改为LED_8Bits,如图: c.更改LED_8Bits配置窗口的属性,如图: 4.添加AXI Interrupt Controller IP核: a.在IP Catalog标签中,双击下面图标创建INTC IP核: b.添加axi_intc_0的中断源,如图: c.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT, 如图:

5.产生外部GPIO连接: a.选中LEDs_8Bits中的GPIO_IO_O,选择make external,生成外部连接 端口;选中GPIO_IO,设置为“No connection”,取消其外部连接端口。 结果如图: b.在ports标签下,展开External Ports项,可看到LEDs_8Bits生成的 LEDs_8Bits_GPIO_IO_PIN端口,如图: 6.添加timer IP核: a.选择如图的IP核并双击,添加到工程: b.中断信号的连接结果如图所示:

相关文档
最新文档