【实验一】跑马灯实验

发布者:颐真阁最新更新时间:2017-09-26 来源: eefocus关键字:跑马灯实验  STM32 手机看文章 扫描二维码
随时随地手机看文章

一、实验目的

通过控制战舰STM32开发板上的两个LED灯:DS0和DS1交替闪烁,实现类似跑马灯的效果。


二、STM32 IO简介


STM32 的每个 IO 端口都有 7 个寄存器来控制。他们分别是:配置模式的 2 个 32 位的端口配置寄存器 CRL 和 CRH; 2 个 32 位的数据寄存器 IDR 和 ODR; 1 个 32

 位的置位/复位寄存器BSRR;一个 16 位的复位寄存器 BRR; 1 个 32 位的锁存寄存器 LCKR。



8种模式:

1、 输入浮空
2、 输入上拉
3、 输入下拉
4、 模拟输入
5、 开漏输出
6、 推挽输出
7、 推挽式复用功能
8、 开漏复用功能


IO 操作步骤:


1) 使能 IO 口时钟。调用函数为 RCC_APB2PeriphClockCmd()。
2) 初始化 IO 参数。调用函数 GPIO_Init()。
3) 操作 IO。


三、硬件设计


硬件只有 LED( DS0 和 DS1);DS0 接 PB5, DS1 接 PE5。


四、软件设计

1)使用到的固件库文件

  1. stm32f10x_gpio.c /stm32f10x_gpio.h  


  1. stm32f10x_rcc.c/stm32f10x_rcc.h  


  1. misc.c/ misc.h  


  1. stm32f10x_usart /stm32f10x_usart.h  


led.c 文件

  1. void LED_Init(void)  


  1. {  


  1.   


  1. GPIO_InitTypeDef  GPIO_InitStructure;  


  1.   


  1. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);   //使能PB,PE端口时钟  


  1.   


  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;            //LED0-->PB.5 端口配置  


  1. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出  


  1. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //IO口速度为50MHz  


  1. GPIO_Init(GPIOB, &GPIO_InitStructure);               //根据设定参数初始化GPIOB.5  


  1. GPIO_SetBits(GPIOB,GPIO_Pin_5);              //PB.5 输出高  


  1.   


  1. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                //LED1-->PE.5 端口配置, 推挽输出  


  1. GPIO_Init(GPIOE, &GPIO_InitStructure);              //推挽输出 ,IO口速度为50MHz  


  1. GPIO_SetBits(GPIOE,GPIO_Pin_5);                 //PE.5 输出高   


  1. }  


main.c 文件


  1. int main(void)  

  2. {     

  3. delay_init();               

  4. LED_Init();           

  5. while(1)  

  6. {  

  7.     LED0=0;  

  8.     LED1=1;  

  9.     delay_ms(300);     

  10.     LED0=1;  

  11.     LED1=0;  

  12.     delay_ms(300);    

  13. }  

  14. }  


五、实验结果


成功!


关键字:跑马灯实验  STM32 引用地址:【实验一】跑马灯实验

上一篇:【实验二】串口实验
下一篇:STM32F103ZET6 之 ADC 采样率的确定

推荐阅读最新更新时间:2024-03-16 15:38

STM32的内存管理和堆栈相关的认知
今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了,写下来,方便以后查看,也想大家看了能指出哪里不对,然后修改。 首先,先看一下stm32的存储器结构。 Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。 FLASH存储下载的程序。 SRAM是存储运行程序中的数据。 所以,只要你不外扩存储器,写完的程序中的所有东西也就会出现在这两个存储器中。 这是一个前提! 堆栈的认知 1. STM32中的堆栈。 这个我产生过混淆,导致了很多逻辑上的混乱。首先要说明的是单片机
[单片机]
<font color='red'>STM32</font>的内存管理和堆栈相关的认知
STM32 USB SD卡读卡器和NAND FLASH模拟U盘
本次工程是要同时实现SD卡读卡器和NAND Flash模拟U盘的功能。结合之前的两个工程,稍稍修改下就可以了。 既然要实现两个盘,当然在usb_prop.c中的Max_Lun变量赋值为1,在USB_User组中同时添加fsmc_nand.c和sdio_sdcard.c这两个文件,在外设库中挺尸添加stm32f10x_sdio.c和stm32f10x_fsmc.c两个文件。 添加完之后,可能会有些许的错误,解决完后,我们就要修改下mass_mal.c文件了,这个文件本次要同时实现SD卡和NAND Flash的相关驱动代码的挂接,代码如下: uint32_t Mass_Memory_Size ; uint32_t Mass_Block
[单片机]
<font color='red'>STM32</font> USB SD卡读卡器和NAND FLASH模拟U盘
使用CubeMX创建BLE应用
1、CubeMX介绍 应用优势 帮助MCU选型 在设计阶段尽可能模拟实际应用场景 自动代码生成,增加开发速度 设置选项 STM32CubeMX需要Java RE环境 安装之后,按Alt+S来配置更新器——不仅用于GUI,还用于Cube FW库 选择软件库存放位置 更新管理器 可以从“帮助”菜单中访问更新 工具更新器可以检测工具和CubeMX库的新版本 使用库管理器下载新的库包 MCU选择器 通过名字查找MCU 方便查找文档 输出Excel表格 MCU交叉选择器 引脚分配 2、功耗测量插件 使用PCC 通用PCC参数 MCU选择:可以直接从网站获取datasheet 参数选
[单片机]
如何互换STM32中UART的Rx和Tx引脚及电平的反转
今天给大家分享关于STM32关于UART的一些新特性,主要针对较新系列STM32(如:STM32H7、G0、G4等)的UART,可通过软件改变Rx和Tx引脚、电平反转、高低反序、介绍超时等。 支持RXD和TXD管脚互换 有些时候,我们在外接RS232芯片时,可能会将RXD和TXD两根线接反。这类低级错误,一般是老司机才会犯。 如果大家知道USART的TXD和RXD管脚可以互换,那么在连接外设RS232芯片时,如果发生错误,就不必再修改硬件,只需直接在软件中将RXD和TXD的管脚反转过来即可修正错误。 参考上图,设置SWAP位,即可将RXD和TXD管脚互换。 支持接收和发送的电平极性反转 第二个新特性:Tx和Rx电平极
[单片机]
如何互换<font color='red'>STM32</font>中UART的Rx和Tx引脚及电平的反转
STM32上电启动过程分析(START_TEST代码实例)
一、概述 1、说明 每一款芯片的启动文件都值得去研究,因为它可是你的程序跑的最初一段路,不可以不知道。通过了解启动文件,我们可以体会到处理器的架构、指令集、中断向量安排等内容,是非常值得玩味的。 STM32作为一款高端 Cortex-M3系列单片机,有必要了解它的启动文件。打好基础,为以后优化程序,写出高质量的代码最准备。 本文以一个实际测试代码--START_TEST为例进行阐述。 2、整体过程概括 STM32整个启动过程是指从上电开始,一直到运行到 main函数之间的这段过程,步骤为(以使用微库为例): ①上电后硬件设置SP、PC ②设置系统时钟 ③软件设置SP ④加载.data、.bss,并初始化栈区 ⑤跳转到C文件
[单片机]
<font color='red'>STM32</font>上电启动过程分析(START_TEST代码实例)
STM32通过USB实现Bootloader/IAP功能
前沿: 最近在做STM32的USB Bootlader/IAP功能,也就是通过USB实现固件升级,本文介绍下实现的基本思路,希望对实现IAP的同学一个参考,改方法已经在产品中得到实际应用并验证是比较合理,稳定可靠的。 程序空间划分: 在单片机的程序Flash中分两个区,分别存储Bootloader代码和App代码,Bootloader放到代码起始地址,也就是0x08000000,App放到0x8020000地址,中间预留了很多的地址空间,主要是为了用来存储一些需要掉电保存的数据,比如我在0x0800C000地址就存放了App程序运行后写入该地址的标志数据。 启动流程: 上电后自然是运行Bootloader程序,Bootloader
[单片机]
<font color='red'>STM32</font>通过USB实现Bootloader/IAP功能
STM32 IAP 设计实例 (一)
项目需要,需要开发一款手持设备,对产品进行软件升级。现在的产品都是使用STM32,所以可以很方便的应用STM32的 IAP功能对软件进行在线升级。 总体需求就是,主机Master通过CAN接口,发送数据给从机Slave。从机在接收到应用程序APP后,把接收的数据覆盖掉原来的应用程序区。从而实现Master对Slave的在线升级。 这里先介绍IAP,对IAP的整体实现有个了解,方便后续开发。参考了原子STM32开发板,对IAP功能的介绍。 要实现IAP,需要有两个项目代码。第一个称之为Bootloader程序,第二个称之为APP程序。Bootloader负责引导APP程序启动,以及需要在线更新APP时,接收主机发送的APP
[单片机]
<font color='red'>STM32</font> IAP 设计实例 (一)
STM32:STM32学习记录3:按键输入
1:IO配置:。上拉输入模式:区别在于没有输入信号的时候默认输入高电平(因为 有弱上拉)。下拉输入模式:区别在于没有输入信号的时候默认输入低电平(因为有弱下拉)。对于浮空输入模式顾名思义也就是输入什么信号才是什么信号,对于浮空输入要保证有明确的输入信号。 2:stm32的GPIO既可以设置为输出也可以设置为输入,当设置为输入时,输出还是可以有效的,当设为上拉时,可以把输出设为高电平,而设为下拉输入时,把输出设为低电平,这样就有了上拉和下拉。 3:STM32 支持 JTAG 和 SWD 两种仿真接口,他们和普通的 IO 口共用,当需要使用普通 IO口的时候,则必须先禁止 JTAG/SWD。STM32 在默认状态下是开启 JT
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved