1 / 15
文档名称:

STM32控制LED灯.docx

格式:docx   大小:927KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

STM32控制LED灯.docx

上传人:鼠标 2023/6/21 文件大小:927 KB

下载得到文件列表

STM32控制LED灯.docx

相关文档

文档介绍

文档介绍:该【STM32控制LED灯】是由【鼠标】上传分享,文档一共【15】页,该文档可以免费在线阅读,需要了解更多关于【STM32控制LED灯】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。STM32控制LED灯STM32控制LED灯?、简述???????记--直接通过设置寄存器来控制LED灯、通过使?STM库函数来控制LED灯实现流?灯。?????????????????????????????????????????????????????????例?1通过设置寄存器来控制LED灯?、效果????????LED0闪烁三、?程结构四、源??件#include""#include""//粗延时voiddelay_ms(intms){?inti,j;?for(i=0;i??for(j=0;j<10000;j++);}//主函数intmain(void){?LED_Init();//初始化LED?while(1)?{??delay_ms(1000);//延时1秒??GPIOF_BSRR|=(1<<9);对位//置1关闭LED??delay_ms(1000);??GPIOF_BSRR|=(1<<25);对//位清0点亮LED?}?return0;}?件#ifndef__LED_H#define__LED_H#include""//定义宏为寄存器地址的解引?,到时候直接操作宏就是操作寄存器,?便编程。//加上volatile关键字是为了防?编译器进?优化,导致操作寄存器地址失败。(提醒编译器,这个值是容易变化的。)#_AHB1ENR*(volatileunsignedint*)(0x40023800+0x30)外设时钟//使能寄存器#defineGPIOF_MODER*(volatileunsignedint*)(0x40021400+0x00)端?//GPIO模式寄存器#defineGPIOF_OTYPER*(volatileunsignedint*)(0x40021400+0x04)端?//GPIO输出类型寄存器#defineGPIOF_OSPEEDR*(volatileunsignedint*)(0x40021400+0x08)端//GPIO?速度寄存器#defineGPIOF_PUPDR*(volatileunsignedint*)(0x40021400+0x0C)端?//GPIO上拉/下拉寄存器#defineGPIOF_BSRR*(volatileunsignedint*)(0x40021400+0x18)端?//GPIO置位复位寄存器voidLED_Init(void);#?件#include""voidLED_Init(void){?//使能GPIOF组时钟?RCC_AHB1ENR|=(1<<5);对位//置1?//设置GPIO?的模式?GPIOF_MODER&=~(1<<19);对位//清0?GPIOF_MODER|=(1<<18);对位//置1?//设置输出模式为推挽模式?GPIOF_OTYPER&=~(1<<9);对位//清0?//设置速度50MHZ?GPIOF_OSPEEDR|=(1<<19);?GPIOF_OSPEEDR&=~(1<<18);?//设置为上拉模式?GPIOF_PUPDR&=~(1<<19);对位//清0?GPIOF_PUPDR|=(1<<18);对位//置1}五、总结???????(在开发板上找到LED的位置)???????????查看GEC-M4原理图2016-07-?件???????????找到LED灯对应的芯?引脚之后,我们可以通过控制该引脚的电平输出来控制LED灯的两灭。???????相关?档:STM32F4xx中?参考????????寄存器映射(基址信息)?????相关寄存器物理地址=基址+偏移地址//定义宏为寄存器地址的解引?,到时候直接操作宏就是操作寄存器,?便编程。//加上volatile关键字是为了防?编译器进?优化,导致操作寄存器地址失败。(提醒编译器,这个值是容易变化的。)#_AHB1ENR*(volatileunsignedint*)(0x40023800+0x30)外设时钟//使能寄存器AHB1总线#defineGPIOF_MODER*(volatileunsignedint*)(0x40021400+0x00)端?//GPIO模式寄存器F组#defineGPIOF_OTYPER*(volatileunsignedint*)(0x40021400+0x04)端//GPIO?输出类型寄存器F组#defineGPIOF_OSPEEDR*(volatileunsignedint*)(0x40021400+0x08)端//GPIO?速度寄存器F组#defineGPIOF_PUPDR*(volatileunsignedint*)(0x40021400+0x0C)端?//GPIO上拉/下拉寄存器F组#defineGPIOF_BSRR*(volatileunsignedint*)(0x40021400+0x18)端?//GPIO置位复位寄存器F组?????步骤1使能GPIOF组时钟(LED0对应PF9引脚,GPIOF外设寄存器接在AHB1总线上)??????????????AHB1(RCC_AHB1ENR)??????????????外设时钟使能寄存器物理地址=基址+偏移地址==》0x40023800+0x30=0x40023830步骤2:设置GPIO?的模式?????????????GPIO端?模式寄存器的地址:0x40021400+0x00=0x40021400步骤3:设置输出模式为推挽模式GPIO端?输出类型寄存器地址:0x40021400+0x04步骤4:设置GPIO端?速度寄存器??????????????GPIO端?速度寄存器地址:0x40021400+0x08步骤5:设置GPIO端?上拉/下拉寄存器?????????????GPIO端?上拉/下拉寄存器地址:0x40021400+0x0C步骤6:设置GPIO端?置位/复位寄存器(设置引脚电平)?????????????GPIO端?置位/复位寄存器地址:0x40021400+0x18????????????????????????????????????????????????????????????????例?2通过使?STM32库函数来控制LED灯--流?灯?、效果??????????从LED1到LED4轮流亮灭三、?程结构四、源??件