完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
想要学好一款芯片,控制芯片io口是必不可少的!实现stm32(正点原子精英版)完成跑马灯(led循环闪烁)实验,就是最基础的控制。我们就必须了解开发板io口模式,那么有几种模式呢?
我把他们分为输入和输出,这样会相对好理解: 1:输出模式 (1)推挽输出:可输出强高,低电平,可连接数字器件 (2)开漏输出:只可以输出强低电平,强高电平需要外部电阻拉高 (3)复用推挽输出:片内外设功能,如iic (4)复用开漏输出:片内外设功能如MOSI,MISO等等 解释一下复用:就是在使用此io口的第二功能时的配置,也就是非通用io模式 2:输入模式 (1)模拟输入:模拟adc输入 (2)上拉输入:内部存在上拉电阻的输入 (3)下拉输入:内部存在下拉电阻的输入 (4)浮空输入:可以做KEY识别,高低电平由外部输入决定 跑马灯实验只需要上面的输出模式的推挽输出,如果说你已经配置到了基础的工程,那么现在就可以开始编写属于我们自己的工程了! 找一个配置好的基础工程就可以开始了: 在基础工程的下面新建一个HARDWARE文件夹 其他名字也可以,只是来保存自己项目的外设项目,然后进入keil5进入 Manage Project Items里面添加新的HARDWARE文件夹,然后新建文件并名为为led.c与led.h保存在刚刚新建的HAREWARE里面,回到上图步骤,单机HAREWARE,点击Add File…,如图标3,找到HAREWARE里面的.c文件,添加 此时还缺少头文件,但是我们已经在刚刚创建了,如何让添加呢? 找到Options for targe ‘template’,如果你的项目不叫template,单引号内就是你自己命名的名字,找到C/C++选项卡,点击include paths, 新建,添加包含头文件上一级目录就行,点击ok,这样,基本框架就好了! 有的小伙伴看到历程里面led.c里面有个加号,自己的却没有, 在建好的led.c里面添加上#include “led.h”,编译一下问题就解决了。 我们还要弄清楚硬件连接: 由图得,想要点亮led,我们应该输入出低电平! 如果是输出低电平,我们的推挽输出可以实现点亮,也可以设置成开漏输出,因为也可以输出低电平! 下面开始我们的代码编写! led.h: #ifndef LED_H //预编译 #define LED_H #include “sys.h”//系统函数 void ledinit(void); #endif led.c: #include “led.h” void ledinit(void) { GPIO_InitTypeDef GPIO_InitStructure;//gpio结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOE, ENABLE);//使能时钟 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_OD;//模式选择 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//频率选择 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//端口配置 GPIO_Init(GPIOB,&GPIO_InitStructure);//端口初始化 GPIO_SetBits(GPIOB,GPIO_Pin_5);//输出高 GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5; GPIO_Init(GPIOE,&GPIO_InitStructure);//端口初始化 GPIO_SetBits(GPIOE,GPIO_Pin_5);//输出高 } main.c: #include “sys.h” #include “delay.h” #include “led.h” #define led0 PBout(5) #define led1 PEout(5)int main(void) { delay_init(); ledinit(); while(1) { led0=0 led1=1; delay_ms(500);//延时500ms led0=1; led1=0; delay_ms(500); } } |
|
|
|
只有小组成员才能发言,加入小组>>
2512 浏览 0 评论
1082浏览 2评论
696浏览 1评论
452浏览 0评论
192浏览 0评论
325浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 06:20 , Processed in 1.274387 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号