stm32点亮第一个发光二极管库函数版

合集下载

教你用STM32一步一步点亮led灯

教你用STM32一步一步点亮led灯

教你⽤STM32⼀步⼀步点亮led灯STM32之⼀步⼀步点亮led (2011-05-09 19:40)标签: stm32led v3.4MDK 4.12⼊门分类:stm32⼊⼿stm32以来,⼀直想快速上⼿,所以在各⼤论坛闲逛,各个达⼈的blog上学习,正所谓欲速则不达,⼼急是吃不了热⾖腐的!有⽊有?最终决定使⽤st官⽹的库开发,据⼤侠们写道使⽤库可以快速上⼿,貌似的确如此,⼀个个教程写的那么好,直接拿过来⽤就是了。

可是那么多个库,聪明的你请告诉到底选择哪⼀个啊?My God!实话实说,我被这些库折腾了个够!好吧,我最后还是承认最后⽤的是v3.4的库,是很⽅便!切⼊正题,点亮LED。

硬件:红⽜开发板,STM32F103ZET6(144封装).软件:RealView MDK 4.12stm32固件库:v3.4 附上⾃⼰整理后的库: V3.4_clean.rar根据官⽹库⾃⼰整理了下,新建了⼯程模板如下图:(主要参考⽂章《在Keil MDK+环境下使⽤STM32 V3.4库.pdf》)在KeilMDK+环境下使⽤STM32V3.4库.pdf⼊图所⽰:新建⼀个⽬录01_ProLed,建议放在英⽂路径下,避免不必要的⿇烦。

将上⾯的库v3.4解压到此⽬录,再新建⼀个project⽬录,存放⼯程。

说明:CMSIS:最底层接⼝。

StartUp:系统启动⽂件。

StdPeriph_Lib:stm32外围设备驱动⽂件。

Project:⼯程⽂件。

User:⽤户⽂件。

新建⼯程步骤:此处略去300字。

简单说明:1.core_cm3.c/core_cm3.h该⽂件是内核访问层的源⽂件和头⽂件,查看其中的代码多半是使⽤汇编语⾔编写的。

在线不甚了解。

--摘⾃《在Keil MDK+环境下使⽤STM32 V3.4库》2.stm32f10x.h该⽂件是外设访问层的头⽂件,该⽂件是最重要的头⽂件之⼀。

就像51⾥⾯的reg51.h⼀样。

STM32 LL 库使用指南说明书

STM32 LL 库使用指南说明书

STM32 LL库使用指南---By Fengzi熟悉STM32的都知道ST官方提供了非常方便好用的库函数供用户使用,多数人都使用过STM32标准外设库,STM32Cube库(即HAL库),这个LL库是什么鬼,却从来没听说过。

好吧,我承认这个名字是我自己XJB取的。

目录一、初识LL 库 (1)二、怎么使用LL库 (3)三、新建STM32LL库工程模板 (5)四、第一个程序——点亮LED (8)五、添加其他程序功能 (10)………………………………………………………………………………………………………………………………………………….一、初识LL 库最近论坛发的STM32L476RG Nucleo开发板到手了,准备学习玩耍,当然第一步就是下载资料,于是我下载STM32L4Cube 1.1.0版本,打开逐个查看,好像和以前一样的,没什么特别嘛,于是准备开始开发。

等等,好像还真发现了有点不一样:熟悉HAL库的都知道,该库的文件几乎都是以stm32xxx_hal_xxx.h/.c命名的,为了和以前的标准库有个区分,上图中那些是什么鬼前辈说,遇到问题赶紧查手册,于是我果断打开STM32L4Cube库的说明手册(UM1884):原来这个东西叫做Low Layer APIs,作为英文渣渣表示实在不习惯洋里洋气的高大上名字,于是擅自把他叫做【STM32LL库】了(不服的你咬我啊)。

从这里看好像是说这个东东比HAL库更接近硬件,到底什么鬼,还不清楚。

但是以前好像没见过这个东西啊,就算是STM32L4Cube的1.0.0版本中都没有。

看看Cube发行历史:原来LL库是在1.1.0版本才加上的,大概意思就是:1.LL APIs是寄存器级的编程,嗯,也就是说我们常说的直接操作寄存器吧。

2.LL APIs适用于xxx等一大堆外设3.LL APIs函数全部定义为static inline函数,放在对应的头文件中,用户使用需要包含相关头文件4.参考这两个文档看看LL库文件在Cube库中的位置,有20多个文件,全部以stm32l4xx_ll_xxx.h命名:STM32Cube_FW_L4_V1.1.0\Drivers\STM32L4xx_HAL_Driver\IncSTM32L4是面向低功耗市场的,同时不失高性能,功耗和性能往往是两个矛盾的东西,ST在硬件设计上想了各种办法来实现兼顾低功耗高性能(例如各种低功耗模式,LP外设等),而在软件层面,程序也讲求效率,LL库全是直接操作寄存器,直接操作寄存器往往效率较高,而且函数定义为内联函数,调用函数时不是堆栈调用,而是直接把函数的代码嵌入到调用的地方,利于提高代码相率,我想这也是ST在STM32L4系列中推出这个直接操作寄存器的LL库的原因之一吧。

stm32电灯最简单代码

stm32电灯最简单代码

stm32电灯最简单代码在学习STM32单片机时,我们常常会选择最简单的例子进行学习和实践。

其中之一就是通过STM32实现一个简单的电灯控制,下面就是这个最简单的STM32电灯控制代码。

首先,需要在工程中添加头文件和宏定义:```#include 'stm32f10x.h'#define LED GPIO_Pin_13```其中,stm32f10x.h是STM32标准库中的头文件,GPIO_Pin_13表示LED所在引脚的编号。

然后,需要进行GPIO的初始化:```GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = LED;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStructure);```其中,RCC_APB2PeriphClockCmd是时钟使能函数,将GPIOC的时钟开启;GPIO_InitStructure是GPIO初始化结构体,其中GPIO_Pin表示要初始化的引脚,GPIO_Mode表示引脚模式为输出模式,GPIO_Speed表示引脚速度为50MHz,GPIO_Init表示初始化。

最后,就是控制LED灯的代码:```while(1){GPIO_SetBits(GPIOC, LED); //LED亮Delay(0xFFFFF);GPIO_ResetBits(GPIOC, LED); //LED灭Delay(0xFFFFF);}```其中,GPIO_SetBits表示将LED引脚设置为高电平,GPIO_ResetBits表示将LED引脚设置为低电平,Delay是延时函数,0xFFFFF表示延时时间。

怎么样用KEIL新建STM32工程并点亮LED灯

怎么样用KEIL新建STM32工程并点亮LED灯

KEIL新建STM32工程并点亮LED灯Ray_Zhang 1、新建工程,保存后会弹出芯片选型对话框,如图1。

图1 新建工程芯片选型保存后弹出对话框,是否要自动建立与芯片有关的驱动。

如图2图2 建立驱动选是,会出现图3:图3 建好的工程分别加入文件,如图4,除了main文件以外,都是别人搞好的,太方便了吧。

图4 添加文件修改以后的图3变为如图5图5 修改以后的工程把所要用的库文件考到一个文件夹里面,方便以后配置,如图6,这些都头文件都不需要自己写。

图6进一步配置程序,如图7,前面不怎么注意的配置就没有标出来了图7 将要添加的库文件加到这里在最后一栏里一定要点setting,不会在下载的时候会报错,如图8图8 配置下载程序框图如果报错如图9的对话框,那说明图8没设置好。

图9 报错对话框2.程序#include "stm32f10x.h" //定义启动设置,以及所有寄存器宏定义GPIO_InitTypeDefGPIO_InitStructure;// 初始化GPIO口,定义了一个名字为GPIO_InitStructure的结构体,而此结构体相当于继承了GPIO_InitYypeDef,在下面直接继承了其字段并赋值。

u32 i=0; // 定义延时参量int main(void){SystemInit(); //系统时钟配置函数通过不同的定义来选择不同的主频这里设置是72m RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//打开功能时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化IO口while (1){for(i=0;i<=0x1ffff;i++);GPIO_SetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置高IO口for(i=0;i<=0x1ffff;i++);GPIO_ResetBits(GPIOA,GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7);//置低io口}}。

模块一 点亮一个发光二极管实现

模块一  点亮一个发光二极管实现

电路设计
1. 选取元器件AT89C5(单片机)
• 单击模式选择工具栏“元件”按钮,单击器件选 择按钮“P”,在弹出的 “Pick Devices”(选 取元器件)对话框的“Keywords”(关键字) 栏中输入元器件名称“AT89C51”(也可以是分 类、小类、属性值),与关键字匹配的元器件 “AT89C51”显示在元器件列表(Results)中。
模块一 点亮一个发光二极管实现
用Proteus软件完成模块一的步骤
双击桌面上的ISIS 7 Professional图标或者单击屏幕左下方的 “开始”→“程序”→“Proteus 7 Professional” →“ISIS 7 Professional”,进入Proteus ISIS集成环境,如图所示。
VCC
GND
C3
R9
10k 10uF
C1 30pF X1
CRYSTAL
C2
30pF
U1
19 XTAL1
18 XTAL2
R1
220
D1
LED-RED
9 RST
29 30 31
PSEN ALE EA
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
• 双击选中的元器件“AT89C51”,便将所选元器 件“AT89C51”加入到对象选择器窗口。单击 “OK”完成元器件选取。
电路设计
2. 放置元器件
• 单击对象选择器窗口的元器件“AT89C51”,元 器件名“AT89C51”变为蓝底白字,预览窗口显 示“AT89C51”元器件;
• 单击方向工具栏按钮可实现元器件的左旋、右旋、 水平和垂直翻转,以调整元器件的摆放方向;

IAR_for_stm32_新建工程点亮LED[技巧]

IAR_for_stm32_新建工程点亮LED[技巧]

IAR for arm 4.42A 应用笔记学习stm32我选择的用的编译器IAR for arm 4.42A,因为开始用的这个吧,习惯了,我感觉,用什么编译器,都一样,程序还是要自己写的,别的东西永远是别人的,拿到自己手里,才是自己的;用IAR调stm32,我首先想到的是用stm32f103驱动一个LED,让他亮起来;接着调中断,接着调各种总线(SPI、SDIO、FSMC、UART、CAN、USB),这些会了,估计什么外围器件都能接上了。

第一章建工程点亮LED1.建工程:这里说下我怎样建的工程:点击如果错过了这个界面点Project——Creat New Project…点,取个名字就可以保存了;有了新的工程点下,保存为.C 文件;再在工程上右击——Add——Add Files..;把我们.C文件加进去;下面是最重要的一部,配置Option;右击工程,点出Option 界面;这里主要配置的几项有://General Options;//C/C++Compiler;//Linker;//Debugger;(1)Option 中的Target 选择我们所用的芯片型号;(2)C/C++Compiler中的Preprocessor输入我们的.h 文件的路径;说明:$PROJ_DIR$\带表的工程序所在的目录;在这个位置的基础上来添加我们的目录。

如:我们在E盘下建了一个文件夹(My_Project)放我们的工程;我把点.h文件放在E:\My_Project \User\inc里面,我们就可以把目录写成$PROJ_DIR$\user\inc;这样方便我的工程随便移动位置;(3)Linker下的Output设置如下:Extra Output设置如下:Config设置如下:说明:这个xcl是我们的flash配置文件,IAR4.42用的xcl文件,高版本的IAR已改为.icf文件,作用是一样的,加载进去就行;(4)Debugger中的Setup先择所用的调试工具,选上run to main;Download中有一项。

项目用单片机点亮一个发光二极管PPT教案

项目用单片机点亮一个发光二极管PPT教案

理论基础——认识单片 机
单片微型计算机,简称单片机, 是指集成在一个芯片上的微型计算机, 它的各种功能部件,包括CPU、存储 器、基本输入/输出接口电路、定时/计 数器和中断系统等,都制作在一块集 成芯片上,构成一个完整的微型计算 机。
第6页/共23页
单片机应用系 统
单片机应用系统
单片机
接 口 电 路 及 外设等
RXD
中断系统
INT0 INT1
第8页/共23页


并个中行8央位I/处O的口I理/O:口器4
PC0P、UP:1、8P位2、,
••


串 全P时运功中 5内4R3个KO行双钟断部。算能BM中口工掩电控R,和断O:串膜路制用M源控行一:系:于口个制可统。:
• •
产序 振和(定断串存始定两定实数内 共 单 使 单生列 频1外时2行放数 时个时 现功2部元用元25时, 率中/中程据 定能/1/R,前,M6计计计6个AH钟允 6断断序和 时。1用用位数数数M个MZ2R脉许21、表 或户于的8:中器器HA,个个个冲晶原格 计ZM:,,)。
1
4
2
0
3
3
4 5
8031
9 3
6
8
7 8051 3
8
7
9 1
8751
3 6
0
3
1 89C51 5
1
3
1
4
2
3
1
3
3
3
1
2
4
3
1
1
5
3
1
0
6
2
1
9
7
2
1
8
8

keil5建立库函数工程模板

keil5建立库函数工程模板

新建基于STM32F10X系统固件库的MDK5的工程模板1.在自己电脑上合适的盘符上新建一个”库函数工程模板”文件夹, 这个根据个人习惯哈,你也可以建立你喜欢的文件夹.2.在”库函数工程模板”文件夹里面建立CORE,PROJECT,STM32_FWLIB,USER四个文件夹.如下图其中,CORE文件夹用来存放核心文件和启动文件, STM32_FWLIB文件夹用来存放ST公司官方提供的库函数源码文件,USER文件夹用来存放主函数文件main.c,以及system_stm32f10x.c,system_stm32f10x.h,stm32f10x_it.h,stm32f10x_it.c,stm32f10x.h,stm32f10x_conf.h文件,PROJECT文件夹主要是用来存放工程文件。

3.把官方固件库“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver”下面的src和inc二个文件夹复制到STM32_FWLIB文件夹下,如下图:其中,src文件夹存放的固件库的“.C”文件,而inc文件夹是存放的是对应的“.H”头文件。

4.把官方固件库相关文件与启动文件复制到CORE文件夹里。

把官方固件库“\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport”下面的core_cm3.c和core_cm3.h复制到CORE文件夹下,把“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startu p\arm”下面的startup_stm32f10x_ld.s启动文件复制到CORE文件夹下面,如下图:说明:我们用的STM32F103R6芯片,芯片的FLASH是32K,是小容量芯片,所以启动文件用”startup_stm32f10x_ld.s”若用其它容量芯片,可以用”startup_stm32f10x_md.s”或”startup_stm32f10x_hd.s”5.把官方固件库“STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ ST\STM32F10x”下面的三个文件“stm32f10x.h””system_stm32f10x.c””system_stm32f10x.h”复制到目录USER下面,在把“STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_ Template”文件夹下面的“stm32f10x_conf.h”,“stm32f10x_it.c”和“stm32f10x_it.h”三个文件也复制到USER文件夹下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档