一.如何学习STM32
学好STM32的编程,学好它提供好的库函数就可以了。ST公司会提供STM32的所有库函数的源码与使用手册!
1)C语言
2)阅读库函数与帮助文档,告诉函数的调用次序,详细实现的功能。
3)使用Keil工具,集合可视化编写代码、编译代码、下载运行、程序仿真用于跟踪代码。
4)熟悉外围设备使用,阅读时序图、英文文档
二、搭建ARM Cortex-M4的开发环境
1、安装Keil公司第五代软件开发板平台,Keil 5 或 MDK 5,版本MDK5.14,可以编写代码、编译代码、下载程序。
a.安装mdk514.exe
b.看情况是否去破解软件
1)如果当前编译的程序小于32KB,可以不用破解软件。如果大于32KB,就得破解该软件。
2)如果用于商业用途,最好是购买它的正版授权。
2.安装芯片资料包,包含芯片的函数库来驱动其硬件,相关的例子文档,芯片资料包是由芯片公司编写好之后上传给Keil公司,然后分发下载。
a.下载网址 http://www.keil.com/dd2/pack
三、创建工程
1、创建完工程之后,会出现编译警告出错问题,解决方法可以参考以下注释,因此新建工程后,必须在工程选项卡当中,【C/C++】中的全局宏定义添加"USE_STDPERIPH_DRIVER",即这个定义控制了是否在应用中启用外设驱动。我们使用标准外设库本来就为了方便控制外设,所以要添加这个定义,以启用外设驱动。
2、添加头文件路径,在工程选项卡当中,【C/C++】中的“Include Paths”添加相应的头文件路径,否则这些文件会出现感叹号,编译器说找不到。.RTEDeviceSTM32F407ZE;.RTE
上述包含两个头文件路径,不同的头文件路径以分号进行隔离。
设置成功之后,记得要删除工程目录下的Listings与Objects文件夹,最后进行重新编译。
3、编译的时候,总是出现以下警告,
main.c(8): warning: #1-D: last line of file ends without a newline //文件末尾没有新行
解决方法:每个公司都有自己的编写代码规范,都需要看到回车换行,在文件末尾按一下回车键。
4、设置Keil编译完之后,生成Hex文件。
在工程选项【output】的标签,勾选“Create HEX File”。
重新编译之后,就生成一下信息。
Build target 'led'
FromELF: creating hex file...
.Objectsproject.axf" - 0 Error(s), 0 Warning(s).
四、GPIO的库函数
GPIO:通用的输入输出口
GPIOA:GPIO的A端口
GPIOG:GPIO的G端口
高电平:3.3v电压
低电平:0V电压
STM32库函数的代码规范
硬件名称(大写)_功能
GPIO_SetBits
RCC_AHB1PeriphResetCmd
P(PORT)A0:GPIO端口A的第0个引脚
PA1:GPIO端口A的第1个引脚
PB0:GPIO端口B的第0个引脚
五、通过J-Link仿真下载器进行下载代码
1)J-Link正确连接到开发板
2)安装驱动Setup_JLinkARM_V415e.exe
3)在工程选项的【Debug】标签,选中“J-LINK/J-TRACE Cortex”,接着点击“settings”,设置port为“sw”,频率为“5MHz”;然后点击【Flash Download】,勾选“Reset and Run”。最后点击“确定”按钮退出。
4)在Keil5 界面当中,点击“Download”图标,就可以进行程序下载。
六、使用库函数编程技巧
1、阅读硬件原理图《GEC-M4原理图2016-07-29.pdf》,了解当前需要使用STM32芯片哪个硬件,就可以知道使用哪些库函数接口。
2、使用库函数的时候,只需要了解该函数的使用方法,如传入参数、返回值、功能描述就足矣。库函数里面的编写内容不需要了解,这些代码都是由ST公司去实现的。
3、如何使用库函数实现一个具体的功能,ST公司都会提供例子文档,告诉我们库函数如何使用,无论是新手还是老手都要看的。
.STM32F4xx中文参考手册.pdf
.stm32f4xx_dsp_stdperiph_lib_um.chm
4.使用的编程标准C,也就是ANSI C编程。
#include "stm32f4xx.h"
#include "sys.h"#
#include "delay.h"
static GPIO_InitTypeDef GPIO_InitStructure;
int main(void)
{
/* GPIOG Peripheral clock enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
/* Configure PG6 and PG8 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //设置第几引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //设置引脚为输出模式
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //引脚翻转频率为100MHz
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //引脚浮空
GPIO_Init(GPIOF, &GPIO_InitStructure);
//GPIO_SetBits(GPIOF, GPIO_Pin_9 );
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); /* Configure PG6 and PG8 in output pushpull mode */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 ;
GPIO_Init(GPIOE, &GPIO_InitStructure);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3| GPIO_Pin_4 ;
GPIO_Init(GPIOE, &GPIO_InitStructure);
while(1)
{
PEout(13) = 1;
PEout(14) = 1;
PFout(9) = 1;
PFout(10) = 1;
delay();
if(PAin(0) == 0)
{
PFout(9) = 0;
delay();
PFout(9) = 1;
}
if(PEin(2) == 0)
{
PFout(10) = 0;
delay();
PFout(10) = 1;
}
if(PEin(3) == 0)
{
PEout(13) = 0;
delay();
PEout(13) = 1;
}
if(PEin(4) == 0)
{
PEout(14) = 0;
delay();
PEout(14) = 1;
}
}
return 0;
}
上一篇:STM32入门之旅(第三天)-------按键电路、时钟体系
下一篇:STM32入门之旅(第一天)-------stm32概述
设计资源 培训 开发板 精华推荐
- 使用 Analog Devices 的 LT1587CT 的参考设计
- LT6656BCS6-5、5V 电压基准作为微功率稳压器的典型应用
- Cree XLamp MT-G2 LED 3 英寸筒灯参考设计
- KITMPC5744DBEVM: 评估子板 - 恩智浦MPC5744P,32位微控制器
- 具有固定输出电压的典型应用,ADP7118 为 5V 20V、200mA 低噪声 CMOS LDO
- 智能平衡小车
- 五路模块化桌面充电器
- EVAL-AD5445EBZ,使用 AD5445、12 位、高带宽乘法 DAC 和并行接口的评估板
- 用于电池充电指示器的 NCP300LSN46T1 4.6V 电压检测器的典型应用
- 使用 Semtech 的 EZ1585B 的参考设计
- 有奖征文:邀一线汽车VCU/MCU开发工程师,分享开发经验、难题、成长之路等
- 发帖赢好礼 | MPS 工程师为您解决DC-DC设计难题
- 共抗疫情 少出门多学习: 多部TI实用课程奉上, 身体不能在路上就让灵魂在路上
- 索取海报:泰克矢量网络分析仪基础知识
- MPS 隔离式稳压 DC/DC 模块——MIE系列首发,邀你一探究竟!
- 【赠书100%有礼】一本书教你如何开发测试系统,深入了解数据采集系统
- 答题赢好礼|机器故障防患未然 大机器健康状态监测为您助力
- 了解 MPS 隔离解决方案,答题赢【华为蓝牙无线耳机、小米氮化镓充电器】!
- 现场抽取PS5等诸多好礼 SiFive RISC-V 中国技术论坛 上海、北京、深圳 3场线下活动邀您出席!
- 跟帖晒单有礼《MCU工程师炼成记》