STM32点亮LED(熟中新认识)
2017-12-27 02:45
302 查看
STM32点亮LED步骤案例http://blog.csdn.net/ktigerhero3/article/details/53942876
准备
(1)硬件
STM32开发板,jlink仿真器(用于烧入程序)
(2)软件
a)集成开发环境keil,我用的是keil4
b)jlink驱动Setup_JLink_V490.exe(驱动jlink仿真器)
准备妥当,GO GO GO
点亮LED灯的步骤如下
1.安装keil软件
2.新建工程
3.配置参数
4.安装jlink驱动和连线烧入程序
5.启动STM32,点亮LED
STM32新建工程比较麻烦,原因是因为需要自己手动包含库函数,设置环境等。
(1)在project选项下新建一个uvision project
选择芯片型号,芯片型号开发板的CPU上有,我的为STM32F103RCT6
(2)新建3个文件夹,分别放不同的库函数
a)core文件夹,主要放CMSIS文件
b)lib文件夹,主要放设备文件
c)user文件夹,放main函数
这些文件对应相应的芯片,可在官方下载。
STM32F10x_StdPeriph_Lib_V3.5.0.rar中有。
(a)core文件夹文件列表如下
2
3
4
5
6
(b)lib文件夹列表
2
3
(c)user文件夹为main.c
1)output 选项下勾create HEX file
2)包含头文件:在options for taget 中的C/C++选项中include path包含core和lib/inc(有头文件的目录都包含进去),
3)Define下加入宏STM32F10X_HD,USE_STDPERIPH_DRIVER
目的:“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”和STM32F10X_HD就是允许“使用标准外设驱动”了。
此时可以编译了,注意,如果编译出现undefined symbol错误,原因是lib中头文件的版本和keil默认include版本冲突,一个解决方案是直接将lib中头文件拷贝到默认的D:\Program Files\keil\ARM\INC\ST\STM32F10x目录中。
(1)下载Setup_JLink_V490.exe,安装后重启系统
(2)在Debug和Utinities中选择J-LINK。在setting中的FLASH
download中add芯片类型
(3)连好线点load烧录程序。
以上新建工程中包含库函数是为了初始化单片机,最终使单片机运行到main函数中。当程序运行到main函数中后,就要在main函数中控制点亮LED灯了。点亮LED灯关键要找到对应关系。
(1)首先要找到开发板上的LED灯。
(2)然后要找到开发板对应的电路图,在电路图上找到你所要控制的LED灯的编号(注意,电路图上的编号对应程序中定义的宏的名称)。
(3) 最后在程序中给LED灯对应的地址赋值(高电平还是低电平)。赋值的方法有三种,可以通过调用库来赋值,也可以给寄存器直接赋值。示例代码如下:
准备
(1)硬件
STM32开发板,jlink仿真器(用于烧入程序)
(2)软件
a)集成开发环境keil,我用的是keil4
b)jlink驱动Setup_JLink_V490.exe(驱动jlink仿真器)
准备妥当,GO GO GO
点亮LED灯的步骤如下
1.安装keil软件
2.新建工程
3.配置参数
4.安装jlink驱动和连线烧入程序
5.启动STM32,点亮LED
1.新建工程
STM32新建工程比较麻烦,原因是因为需要自己手动包含库函数,设置环境等。 (1)在project选项下新建一个uvision project
选择芯片型号,芯片型号开发板的CPU上有,我的为STM32F103RCT6
(2)新建3个文件夹,分别放不同的库函数
a)core文件夹,主要放CMSIS文件
b)lib文件夹,主要放设备文件
c)user文件夹,放main函数
这些文件对应相应的芯片,可在官方下载。
STM32F10x_StdPeriph_Lib_V3.5.0.rar中有。
(a)core文件夹文件列表如下
//5个 core_cm3.c core_cm3.h system_stm32f10x.c system_stm32f10x.h stm32f10x.h1
2
3
4
5
6
(b)lib文件夹列表
//两个文件夹 inc src1
2
3
(c)user文件夹为main.c
2.配置参数
1)output 选项下勾create HEX file 2)包含头文件:在options for taget 中的C/C++选项中include path包含core和lib/inc(有头文件的目录都包含进去),
3)Define下加入宏STM32F10X_HD,USE_STDPERIPH_DRIVER
目的:“使用标准外设驱动”,在C/C++预定义中加入“USE_STDPERIPH_DRIVER”和STM32F10X_HD就是允许“使用标准外设驱动”了。
此时可以编译了,注意,如果编译出现undefined symbol错误,原因是lib中头文件的版本和keil默认include版本冲突,一个解决方案是直接将lib中头文件拷贝到默认的D:\Program Files\keil\ARM\INC\ST\STM32F10x目录中。
3.安装jlink驱动
(1)下载Setup_JLink_V490.exe,安装后重启系统 (2)在Debug和Utinities中选择J-LINK。在setting中的FLASH
download中add芯片类型
(3)连好线点load烧录程序。
4.自己编写点亮LED程序
以上新建工程中包含库函数是为了初始化单片机,最终使单片机运行到main函数中。当程序运行到main函数中后,就要在main函数中控制点亮LED灯了。点亮LED灯关键要找到对应关系。 (1)首先要找到开发板上的LED灯。
(2)然后要找到开发板对应的电路图,在电路图上找到你所要控制的LED灯的编号(注意,电路图上的编号对应程序中定义的宏的名称)。
(3) 最后在程序中给LED灯对应的地址赋值(高电平还是低电平)。赋值的方法有三种,可以通过调用库来赋值,也可以给寄存器直接赋值。示例代码如下:
#include "stm32f10x.h" #define SHOW_LED (*((volatile unsigned int *)0x40010800)) int main() { //1.声明一个GPIO初始化结构体 GPIO_InitTypeDef GPIO_InitStructure; //2.IO端口复用都需要初始化一个时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PB,PE端口时钟 //3.给结构体赋值 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PB.8 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz //4.初始化GPIOA GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.8 //5.根据电路图设置此端口是高电平还是低电平,如果有电流通过,LED灯就亮了 //法1.调用库函数来实现IO控制,设置为低电平,有电流通过 GPIO_ResetBits(GPIOA,GPIO_Pin_8); //法2.直接控制寄存器来实现IO控制 //GPIOA->BRR=GPIO_Pin_8; //法3.找到寄存器地址,直接赋值 //SHOW_LED&= ((unsigned int)0x0100); return 0; }
相关文章推荐
- 转STM32自学系列——1.gpio(通用复用输入输出口)应用点亮LED和微动开关
- 第7章 使用寄存器点亮LED灯—零死角玩转STM32-F429系列
- stm32学习的日子-构建库函数雏形(第1节)—寄存器结构体定义控制点亮G0Kitv2.1 LED2和LED4
- 创建keil工程并点亮STM32板子的LED灯(详解)
- 利用keil编写stm32循环点亮一LED灯
- 【stm32】学习笔记(2)12月28号----------点亮一位LED
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STM32_外部中断之按键控制点亮LED灯
- STM32开发之点亮LED灯
- STM32-点亮LED灯(GPIO配置)
- STM32-1-LED点亮与熄灭
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STM32 外部中断的使用(按键中断点亮LED)
- STM32学习笔记之点亮LED灯
- STm32 使用 stm32cube GPIO 点亮 led 的
- 用RVCT编译STM32点亮LED
- STM32 自建库点亮LED
- STM32点亮LED
- [转载]STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- STM32:CooCox IDE环境搭建 点亮LED