完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
第1课:点亮你的第一个LED灯
原理分析: 大家之前学习过51单片机,也使用过IO口。与ARM CORTEX M0的IO口配置有点区别,51不需要设置IO口为输入或者输出,而CORTEX M0的IO口有多种状态需要设置,那么下面我们一一介绍: 首先看看IO口的模式,如下寄存器说明,IO口可以配置为4种模式:输入模式,输出模式,复用模式,模拟通道模式。由于stm32f051系列多数的IO关键复用了其外设功能,比如I2C,SPI,UART等,此时就可以设置IO口为复用模式。模拟通道则作为AD,DA的时候使用: 如果大家使用库函数编程的时候,可以在 stm32f0xx_gpio.h文件中找到设置IO模式的结构体GPIOMode_TypeDef : 下面来介绍下输入和输出模式,其中输出模式如下图所示,分为推挽输出和开漏输出。这时候大家就要回忆下模电的课程了。 我使用下面一个等效图说明一下推挽输出和开漏输出。图所示:U1是输出锁存器,执行GPIO管脚写操作时,在写脉冲(Write Pulse)的作用下,数据被锁存到Q和/Q。T1和T2构成CMOS反相器,T1导通或T2导通时都表现出较低的阻抗,但T1和T2不会同时导通或同时关闭,最后形成的是推挽输出。 如图1.3所示,为GPIO管脚在开漏输出模式下的等效结构示意图。开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管T1而没有上拉晶体管。同样,T1实际上也是多组可编程选择的晶体管。开漏输出的实际作用就是一个开关,输出“1”时断开、输出“0”时连接到GND(有一定内阻)。 同样大家使用库函数编程的时候,可以在 stm32f0xx_gpio.h文件中找到设置输出模式的结构体GPIOOType_TypeDef 同时我们可以设置IO端口输出的速度,在库函数中通过结构体来解决: 输入的模式可以分为上拉和下拉模式,这就比较简单了,寄存器的设置如下图: 同样大家使用库函数编程的时候,可以在 stm32f0xx_gpio.h文件中找到设置输入模式的结构体GPIOOPuPd_TypeDef 上面介绍完了STM32F051的IO端口有哪几种模式,现在就来点亮一个LED灯,学过51的同学可以回忆下,51是通过设置IO口输出0或者1来驱动LED灯的亮灭。在STM32F051中,我们通过设置IO端口为输出来点亮LED等。 硬件准备: 如上图所示: 青风STM32F051开发板上,通过管脚PA11和管脚PA12连接2个LED灯,我们下面的任务首先来点亮它。 软件准备: 按照第一章的介绍首先建立一个工程项目,采用库函数来在驱动IO口首先要添加几个驱动库,如下图所示: 上图红色框框中的几个文件都是ST官方给我们编好的库函数。那边用户在使用中,只需要编写led.c 驱动文件和main.c主函数就OK,整个工程项目大家如果加入分层的思想那么就对之后的移植非常有利。打个比方:底层和应用程隔离。底层驱动和应用层无关,main.c使用的函数在led.c驱动中已经些好,这些才和硬件有关,这是需要移植到不同硬件时,main主函数是可以不做任何修改的,只需要修改和底层相关的led.c驱动。 下面来分析下led .c的驱动编写: 上面的函数中GPIO_ResetBits函数和GPIO_SetBits函数在stm32f0xx_gpio.c驱动文件中所定义了。分别表示复位和置位相关IO管脚。 那么主函数的编写就比较简单了,我们需要调用下面2个头文件,才能够直接使用我们定义的子函数。如下使用LED_Open()函数就能够点亮一个LED灯了,是不是很简单。 那么加入一个小的延迟delay函数和打开与关闭LED子函数相结合,就可以实现LED闪烁的功能了,函数如下所示: |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:08 , Processed in 0.823040 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号