历史上的今天
返回首页

历史上的今天

今天是:2024年09月06日(星期五)

正在发生

2019年09月06日 | stm32实现LED灯亮灭

2019-09-06 来源:eefocus

一、概述

本章中,不特殊说明都以stm32F103VET6为例,软件平台为iar6.4


通过查看原理图,我们的LED指示灯配置在PB8、PB9管脚上,通过配置GPIOB时钟及引脚来控制指示灯的亮灭。

二、本章学习目标

学会查看原理图

理解stm32端口配置

学会操作使用iar编程工具

三、GPIO端口配置

1.配置开启GPIO时钟


STM32上电时外设时钟默认不开启,用要时需要先开启时钟,本例开启GPIOA和GPIOB的时钟。 


参考代码:


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


2.设置GPIO输出模式


 stm32F1提供了4种输出模式(推挽输出、开漏输出 、复用推挽输出 、复用开漏输出)和3种输出速度;一般配置LED采用推挽输出;


/*PB8,out*/


GPIO_InitTypeDef GPIO_InitStructure;


GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;


GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;


GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;


GPIO_Init(GPIOB, &GPIO_InitStructure);


3、控制LED灯


参考原理图,可以看出点亮LED灯需要IO口输出低电平;


LED亮(设低电平) GPIO_ResetBits(GPIOB, GPIO_Pin_8)       


LED灭(设高电平) GPIO_SetBits(GPIOB, GPIO_Pin_8)  


四、例程参考

1、打开led工程


 用iar编程工具找开led目录下的工程,可以参考《Iar工程编译和下载的使用教程.docx》文档;


2、led目录结构说明

image.png?imageView2/2/w/550


三、文件内容说明

1、startup_stm32f10x_hd.s(启动文件)


文件描述:


该文件作为启动时执行的第一步,这个文件中有一段启动代码。


代码工作流程:


(1) 初始化SP;


(2)  初始化PC指针 --- 指向iar_program_start


(3)  设置中断向量表各exception的地址


(4)  全局变量清零


(5)  转向C语言的main函数


 


system_stm32f10x.c(系统配置)

文件描述:


system_stm32f10x.c里的函数的功能是完成系统时钟的配置,通过RCC.c调用system_stm32f10x.c内部的SystemInit的函数,进行系统时钟的初始化;


3、NVIC.c(中断配置程序)


文件描述:


 配置使能系统中断程序文件,本例中主要配置使能USART1串口接收中断;


3.1 NVIC_Configuration()


调用该函数主要设置中断允许及中断优先级;


函数原型:


void NVIC_Configuration(void);


参数:(无)


返回值:(无)


 


4、RCC.c(配置系统时钟程序)


文件描述:


 配置使能系统时钟程序文件,本例中主要配置系统时钟频率设为72MHz;主要调用system_stm32f10x.c内部的SystemInit的函数,进行系统时钟的初始化;


4.1 RCC_Configuration()


调用该函数主要设置中断允许及中断优先级;


函数原型:


void RCC_Configurationvoid);


参数:(无)


返回值:(无)


 


5、bsp.c(板载驱动程序)


文件描述:


 初始化所有的硬件设备;


5.1 bsp_Init()


调用该函数主要配置时钟,初始化所有的硬件设备。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。只需要调用一次;


函数原型:


void bsp_Init(void);


参数:(无)


返回值:(无)


 


6、main.c(主程序)


文件描述:


  初始化全局变量,配置时钟,初始化所有的硬件设备,定时每秒切换运行led指示灯。


代码工作流程:


int main(void)


{


bsp_Init();//硬件初始化


    USART1_Puts("demo ledrn");


while(1)


{

              SET_LED_1;


              delay_ms(1000); //1000毫秒  1秒


              CLR_LED_1;


        delay_ms(1000);


}


}


推荐阅读

史海拾趣

AIM公司的发展小趣事

随着公司业务的不断发展和产品线的丰富,AIM开始积极拓展市场,寻求更广阔的发展空间。公司积极参与国际电子展会和交流活动,与全球各地的客户和合作伙伴建立了紧密的合作关系。通过与国际知名企业的合作,AIM的产品和技术得以在全球范围内推广和应用,进一步提升了公司的知名度和影响力。

GarrettCom公司的发展小趣事

布局:随着全球化进程的加速推进,GarrettCom(现为Belden的一部分)积极实施全球化战略。公司在全球范围内设立了多个分支机构和服务中心,以便更好地服务全球客户。同时,公司还加强了与国际知名企业的合作与交流,共同推动电子行业的发展和进步。

成果:通过全球化战略的实施和市场拓展的努力,GarrettCom(现为Belden的一部分)在全球市场上取得了显著的成绩。公司的产品和解决方案被广泛应用于全球各地的工业项目中,赢得了广泛的好评和认可。同时,公司还积极参与国际竞争与合作,不断提升自身的品牌影响力和市场竞争力。

Brilliance公司的发展小趣事

随着市场竞争的加剧,Brilliance公司意识到只有不断创新才能在行业中立足。于是,公司加大了对研发的投入,引进了一批高端人才和先进设备。经过无数次的试验和改进,Brilliance成功研发出了一项具有颠覆性的技术,并将其应用于新产品中。这款新产品不仅性能卓越,而且具有极高的性价比,迅速占领了市场份额。

Compostar Technology Co Ltd公司的发展小趣事

随着产品线的不断丰富,Compostar Technology Co Ltd开始积极寻求市场拓展。公司通过与国内外知名电子品牌建立战略合作关系,成功将产品打入国际市场。同时,公司还积极参加各类行业展会和技术交流会,与业界同行建立了广泛的联系。这些努力不仅为公司带来了更多的商机,也进一步提升了公司的知名度和影响力。

Conflux公司的发展小趣事

随着公司业务的不断发展,Conflux开始寻求与其他电子行业企业的合作。通过与智能手机制造商的合作,Conflux成功将其区块链技术集成到了手机支付应用中,为用户提供了更加便捷、安全的支付体验。此外,Conflux还与多家电商平台达成战略合作,利用区块链技术优化交易流程,提高交易透明度。这些合作不仅拓展了Conflux的市场份额,也进一步提升了其在电子行业的影响力。

Crocus公司的发展小趣事

Crocus公司成立于XXXX年,是一家专注于先进隧道磁阻(TMR)传感器技术的研发与生产的企业。创立初期,公司面临着资金紧张、技术壁垒等重重困难。然而,凭借创始团队对TMR技术的深刻理解和坚定信念,Crocus逐渐在行业中崭露头角。他们不断投入研发,优化产品性能,为后续的快速发展奠定了坚实的基础。

问答坊 | AI 解惑

俺想学习FPGA--有偿寻求合作开发FPGA学习板

俺想学习FPGA--有偿寻求合作开发FPGA学习板 看到现在FPGA现在这么火爆,忍不住想学习一下。 但是本人对FPGA了解甚少。想寻求高手共同合作搞一个FPGA开发板。 我负责:元件费用,打样费用。以及适当给与合作者一定酬劳(这个不多,呵呵,俺也是 ...…

查看全部问答>

无线通信系统中的调制解调基础(一):AM和FM

作者: Ian Poole Adrio Communications Ltd 第一部分解释了调幅(AM)和调频(FM)的基础,并阐述了优点和缺点。第二部分解析了频移键控(PSK)和正交幅度调制(QAM)。第三部分讨论扩频通信技术,包括被广泛应用的直接序列扩频通信(DSSS),和 ...…

查看全部问答>

.net程序在WinCE5.0上不能运行

我的wince上咋就不能运行dotnet的程序呢,点击应用程序一点反应也没有,也不报错。另外,保证dotnet的支持包已经打入wince,1.1和2.0都打了。 把SYSGEN_DOTNET和SYSGEN_DOTNET_SUPPORT还有DOTNETV2的所有选项加上,则运行dotnet的程序既不报错 ...…

查看全部问答>

PB5.0补丁问题

MS网站上PB5.0几乎每个月都有补丁,请问打补丁时是打最新的还是所有的都打上。我看了最新的补丁好象就升级了BLUETOOTH的程序。…

查看全部问答>

AD7705的参考电平能不能是5v

我看很多资料都写得是AD7705的参考电平时2.5v,但是今天看到有人用ref195的输出做AD7705的参考电平,ref195接ref+输出5v,ref-接地请问这样合适吗。 还有AD7705的资料上写着采样范围是0-20mv或0-2.5v,一直不太明白这是什么意思,0-2.5v不是包括0- ...…

查看全部问答>

An unspecified Debug Toolbox call failed

我在使用ADS1.2套件的AXD时,连接了Easyjtag,并进行了设置,但是却出现了如题的An unspecified Debug Toolbox call failed的错误,请高人指点,该如何解决这个问题?…

查看全部问答>

keil编译ARM报--- Error: can't execute 'BIN30\ArmAsm'怎么解决

我安装的keil 3.3版本,以前用来编译C51,现在添加上ARM,操作系统是U COS II,编译时报--- Error: can\'t execute \'BIN30\\ArmAsm\',我把C:\\Keil\\ARM\\BIN30中的ARMASM.EXE拷贝到BIN中无法解决此问题,请教高手要怎么处理…

查看全部问答>

VC33-120定时中断我置1ms中断 结果是10ms ?

斑竹: 我用vc33-120做了一块卡,外部晶阵是12m,5倍频,定时中断置数30000,理论计算 我的定时中断应该是1000hz,但是发现是100hz,我晶阵换过,都没有用.请教斑竹 最可能是什么原因啊  急!文字…

查看全部问答>

德州仪器:OMAP 5平台:开启移动设备变革新时代

TI OMAP 5平台不仅全面提升了性能,还采用了能够带来新机遇和用户体验的新特性,从而使应用处理器能够满足更广泛的要求。简而言之,OMAP 5平台将以其全新的性能及功能水平推动移动设备的变革,让我们共同开启“变革”新时代!$(\'swf_eBM\').innerH ...…

查看全部问答>

温度显示以及控制电机转速,不能同时工作,来人指点一下啊

#include #define uchar unsigned char #define uint unsigned int sbit uln=P2^0;//uln2803 sbit DQ=P2^1;//ds18b20与单片机连接口 sbit ming=P2^2;// sbit hong1=P2^3; sbit hong2=P2^4; sbit RS=P2^5; sbit RW=P2^6; sbit EN=P2^7; u ...…

查看全部问答>