完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
引言 长话短说今天开始STM32的学习,本阶段的知识是基于ST公司的标准库函的开发:Keil.STM32F4xx_DFP.1.0.8.pack。
安装软件和工程搭建就不多说了,工程模板和标准库(Keil.STM32F4xx_DFP.1.0.8.pack)点击下载 下面就开始正文了,激动人心的点灯 LED库开发 LED库开发要添加库文件:stm32f4xx_gpio.c 理解LED灯原理图 LED0连接在PF9引脚 PF9输出VCC(1),灯灭 PF9输出GND(0),灯亮 点灯步骤 1、打开GPIOF组时钟,也叫做使能F组时钟(STM32当中外设的时钟默认不打开,降低功耗) //使能GPIO F组时钟, RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE); 2、设置GPIOF9 引脚为输出模式 输出推挽 上拉 速度,并初始化GPIO GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOF, &GPIO_InitStruct); 3、通过置位或者复位函数控制引脚电平 GPIO_SetBits(); //置位(1) GPIO_ResetBits(); //复位(0) GPIO_ToggleBits(); //电位翻转 GPIO_ReadInputDataBit(); //读取引脚输入电平 GPIO_ReadOutputDataBit();//读取引脚输出电平 GPIO-LED点灯实现例程 led.c #include "led.h" /* 引脚说明: LED0 -- PF9 LED1 -- PF10 LED2 -- PE13 LED3 -- PE14 输出VCC(1),灯灭 输出GND(0),灯亮 */ void Led_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIO F组时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIO E组时钟 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9; //引脚9 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOF, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10; //引脚10 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOF, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; //引脚13 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOE, &GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14; //引脚9 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; //输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; //推挽 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //快速 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; //上拉 GPIO_Init(GPIOE, &GPIO_InitStruct); //熄灭所有LED灯 GPIO_SetBits(GPIOF,GPIO_Pin_9); GPIO_SetBits(GPIOF,GPIO_Pin_10); GPIO_SetBits(GPIOE,GPIO_Pin_13); GPIO_SetBits(GPIOE,GPIO_Pin_14); } mian.c #include "stm32f4xx.h" #include "led.h" //粗延时 void delayms(int n) { int i, j; for(i=0; i for(j=0; j<40000; j++); } int main(void) { Led_Init(); while(1) { GPIO_ResetBits(GPIOF, GPIO_Pin_9); delayms(500); GPIO_SetBits(GPIOF, GPIO_Pin_9); delayms(500); GPIO_ResetBits(GPIOF, GPIO_Pin_10); delayms(500); GPIO_SetBits(GPIOF, GPIO_Pin_10); delayms(500); GPIO_ResetBits(GPIOE, GPIO_Pin_13); delayms(500); GPIO_SetBits(GPIOE, GPIO_Pin_13); delayms(500); GPIO_ResetBits(GPIOE, GPIO_Pin_14); delayms(500); GPIO_SetBits(GPIOE, GPIO_Pin_14); delayms(500); } return 0; } |
|
|
|
只有小组成员才能发言,加入小组>>
3309 浏览 9 评论
2988 浏览 16 评论
3490 浏览 1 评论
9050 浏览 16 评论
4084 浏览 18 评论
1168浏览 3评论
601浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
592浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2329浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1892浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 13:55 , Processed in 3.336294 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号