STM32开发学习进修学习入门教学教材.doc
《STM32开发学习进修学习入门教学教材.doc》由会员分享,可在线阅读,更多相关《STM32开发学习进修学习入门教学教材.doc(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-_STM32 开发入门教程开发入门教程(一一) 开发环境建立及其应用开发环境建立及其应用入门准备入门准备: 我们常用的 STM32 开发编译环境为 Keil 公司的 MDK (Microcontroller Development Kit) 和 IAR 公司的 EWARM.在这里我们提供了比较稳定的新版本编译软件下载: MDK4.10 限于篇幅, 在我们的教程里面将先以 MDK 下的一个例子来介绍如何使用 MDK 进行嵌入 式应用开发.MDK 安装与配置安装与配置:基于 MDK 下的开发中基本的过程: (1) 创建工程; (2) 配置工程; (3) 用 C/C+ 或者 汇编语言编写源文件;
2、(4) 编译目标应用程序 (5) 修改源程序中的错误 (6) 测试链接应用程序- (1) 创建一个工程创建一个工程:在 uVision 3 主界面中选择 “Project“ - “New uVision Project“ 菜单项, 打开一个标准对话 框选择好你电脑中的保存目录后, 输入一个你的工程名字后点确认.我们的工程中建了一个 名字叫 “NewProject“ 的工程. 从设备库中选择目标芯片, 我们的 MINI-STM32 开发板使用的是 STM32F103V8T6, 因此 选中 STMicrocontroller 下对应的芯片:ARM 32-bit Cortex-M3 Microcon
3、troller, 72MHz, 64kB Flash, 20kB SRAM, PLL, Embedded Internal RC 8MHz and 32kHz, Real-Time Clock, Nested Interrupt Controller, Power Saving Modes, JTAG and SWD, 3 Synch. 16-bit Timers with Input Capture, Output Compare and PWM, 16-bit 6-ch Advanced Timer, 2 16-bit Watchdog Timers, SysTick Timer, 2 S
4、PI, 2 I2C, 3 USART, USB 2.0 Full Speed Interface, CAN 2.0B Active, 2 12-bit 16-ch A/D Converter, Fast I/O Ports-_-_选择完芯片型号后会提示是否在目标工程中加入 CPU 的相关的启动代码, 如下图所示. 启动代码是用来初始化目标设备的配置, 完成运行的系统初始化工作, 因此我们选择 “是“ , 这会使系统的启动代码编写工作量大大减少.- (2)(2) 配置工程配置工程: :选择菜单中 “Project“ - “Option for Target“ 或者 选择快捷菜单中的图标:因为 M
5、INI-STM32 开发板上使用的就是 8M 的晶振且是使用的片内的 RAM 和 ROM 因此 “taget“ 下我们都可以使用默认的配置;在“Output“菜单下我们需要选中 “Creat Hex File“ 来生成编译好的工程代码, 此工程可以通过仿真器或者串口 ISP 烧录进开发板中.注: ISP 烧录过程我们将在入门教程二中给大家介绍.“Listing“ “User“ 菜单中我们保持默认即可.“C/C+“ 菜单为我们常用的菜单, 这里简单的介绍下他们的具体功能:PreProcesser Symbols 中的 Define, Undefine 菜单表示是工程的宏定义中的变量, 我们将在今
6、后的教程中详细介绍这个功能.-_Optimization 为优化选项, Level0 为不优化, 这种模式最适合调试, 因为不会优化掉代码, 基本每个用到的变量都可以打断点. Level3 为优化等级最高, 最适合生产过程中下载到芯片中的代码. Include Path 为工程中的包含路径, 一般需将 .h 文件或者库文件的地址配置进去.“Asm“ 和 “Link“ 将在今后的高级教程中介绍.“Debug“ 为我们调试使用的配置选项, “Use Simulator“ 为使用软件仿真. 这里根据大家手里的仿真器来选择配置环境.如果你使用的是 Ulink, 那么就选择 “Ulink Cotex D
7、ebug“, 如果你选择的是 JLINK, 那么就选择 “ Cotex M3 Jlink“, 如果你使用的是 ST 公司出的简易仿真器 ST-Link , 那么你就选择 “ST-Link Debug“.注意: 右边当中的选项 “Run to main“ 选项如果勾上就表示仿真时进入了就会进入到 main 函数, 如果没有选上就会进入初始地址, 你需要自己打断点运行到你的主程序 main 处.-_当插上仿真器后选择上面右图中的 Setting 后会跳出一个仿真器的配置菜单. 左边会自动识别出你的仿真器的信息.如下图为 ULINK2 的信息:-_对于 SWJ 选项为三线制调试, 将在后面的高级教程
8、中介绍. 右下方有两个选项: “Verify Code Download“ : 表示下载后校验数据 “Download to flash“: 表示当仿真的时候先将目标代码下载到 Flash 中.Trace 菜单为跟踪配置, 可以实时的将一些变量使用曲线的形式实时表示出来, 我们将在 今后的高级教程中介绍这一项功能. 注意: 市面上目前的盗版 Ulink2 不支持这项功能, 正版的支持, Jlink 也不支持这项功 能.“Flash Download“ 菜单用来配置使用仿真器程序下载的配置选项, 大家务必选择好和你 芯片配套的选项. 如果你是使用的别人模板下修改为你的工程, 这个选项请注意一下,
9、 如 果不正确将不能将你的代码下载到芯片中.配置好 “Debug“ 后, 那么 “Utilities“ 可以不用配置. 如果你使用的是仿真器仿真, 在你已经正确得将目标板和仿真器建立了物理连接后, 请选 择正确的仿真器进行配置.-_(二二) ISP 在线下载程序在线下载程序ISPISP:inin systemsystem programmingprogramming简介简介: :ISP: 用写入器将 code 烧入,不过,芯片可以在目标板上,不用取出来,在设计目标板的时候就将接口设计在上面,所以叫“在系统编程“,即不用脱离系统; 应用场合: 1,ISP 程序升级需要到现场解决,不过好一点的是不
10、必拆机器了; ISP 的实现一般需要很少的外部电路辅助实现,通常可利用单片机的串行口接到计算机的 RS232 口,通过专门设计的固件程序来编程内部存储器。主要是指代芯片的烧写方式,以往写片子需要把片子拿下来,离开电路,用 编程器烧,换句话说,芯片不能不脱离应用系统进行写入。 ISP 主要针对这个问题,使用 JTAG 或者串行口(MCU 内部有 Boot Loader,通过指定的方式激活之,它可以和 PC 或其它上位机通过串口联系,不用使单片机离开应用系统而更新内部的程序/设置)进行程序的烧写操作。因此,具有 ISP 功能的 MCU 可以不使用编程器进行编程。当然,实现 ISP 可能需要一些硬件
11、电路支持,具体的在数据手册中有说明。一般具备 ISP 功能后,就不要编程器了,而是使用下载线进行编程工作。但是不是说他们就一定不支持编程器了,具体型号具体分析。是否需要仿真器进行仿真和是否具备ISP 和 IAP 没有必然的联系。只不过具备了 IAP 功能,可以在 MCU 内写入监控程序,模拟一个仿真器,当然,这个监控程序是要消耗资源的,和使用硬件的仿真器还有一定的差异。-以上就是以上就是 ISPISP 的一些概念上的描述的一些概念上的描述, , 现在通俗点说就是怎么利用工具把程序下载到芯片当现在通俗点说就是怎么利用工具把程序下载到芯片当中去中去. .第一步第一步: : 配置工程配置工程, ,
12、输出编译后的代码输出编译后的代码 .Hex.Hex 文件文件: :我们打开第一个我们的教程例子, GPIO_Test 这个例子工程. 先按照下面的步骤来配置一下工程:-_点击下图中的 Option 选项;选中 “Output“ 菜单下的 “Create HEX File “, 并且在右边的 “Name of Executable“ 中填写我们生成编译代码的文件名称.-_配置完选项后, 点击工程编译按钮, 然后我们就可以在 Example2-GPIOGPIO_testoutput 目录下面得到 Gpio_Test.Hex 文件了.第二步第二步: : 准备串口物理连接和准备串口物理连接和 设置设置
13、 BootBoot 跳线选择芯片启动类型跳线选择芯片启动类型先需要准备一根串口延长线, 一头为公头,一头为母头的串口连接线 (非交叉线), 和一台有串口的电脑. (注意:如果您的电脑没有串口,请购买 “USB 转 RS232“ 的硬件设备来扩充你电脑的串口.) 将 Mini-STM32 的 J1 跳线帽跳至 2,3 两脚上选择芯片从内部的 Boot 区启动, 上电后会先进入 ISP 状态.连接串口线至你的电脑上的串口将 USB 延长线连接至你的电脑上给 Mini-STM32 开发板供上 5V 电源. 当开发板上的电源指示灯点亮后一切准备就绪. 第三步第三步: : 配置配置 ISPISP 下载软
14、件下载软件 mcuisp.exe:mcuisp.exe:您可以点击下载稳定版的 mcuisp V0.975 版本的软件: mcuisp.rarmcuisp.rar (576.58 KB) 打开 mcuisp.exe 绿色软件,选择好您连接至开发板使用的电脑上的串口, 可以通过搜索串口菜单来自动搜索出你电脑上的串口信息.在左上方的“程序文件“选择你准备烧入芯片中的代码, 就是前面我们生成的Gpio_Test.Hex. 然后在菜单选项栏上选择 “STMISP“ 菜单, 点击 “读 STM32 器件信息“ 命令按钮.我们会在右边的信息框中显示出连接成功的信息: 如图所示:-_选择上“校验“和“编程后
15、运行“两个选项后点击“开始编程“. 会报出程序成功烧入芯片的一些信息, 如下:- DTR 电平置高(+3-+12V),复位 RTS 置高(+3-+12V),选择进入 BootLoader .延时 100 毫秒 DTR 电平变低(-3-12V)释放复位 RTS 维持高 开始连接.3, 接收到:1F 在串口 COM4 连接成功115200bps,耗时 343 毫秒 芯片内 BootLoader 版本号:2.1 芯片 PID:00000410 芯片 FLASH 容量为 128KB 芯片 SRAM 容量为 65535KB(此信息仅供参考,新版本芯片已不包含此信息) 96 位的芯片唯一序列号:33006
16、C065839353235581943 读出的选项字节:A55AFF00FF00FF00FF00FF00FF00FF00 全片擦除成功 第 547 毫秒,已准备好 共写入 2KB,进度 100%,耗时 4343 毫秒 成功从 08000000 开始运行 向您报告,命令执行完毕,一切正常-这个时候您可以看到您手中的这个时候您可以看到您手中的 Mini-STM32Mini-STM32 开发板上的两个红色开发板上的两个红色 LEDLED 有规律的轮流点亮有规律的轮流点亮, , 说明程序已经成功的烧入芯片了说明程序已经成功的烧入芯片了. .-_最后您在断电后将最后您在断电后将 Mini-STM32M
17、ini-STM32 上上 J1J1 的跳线帽跳至的跳线帽跳至 1,21,2 引脚上引脚上, , 重新上电后重新上电后, , 程序就可程序就可 以正常运行了以正常运行了. .(三三) 系统时钟系统时钟 SysTick( (一一) ) 背景介绍背景介绍 在传统的嵌入式系统软件按中通常实现 Delay(N) 函数的方法为:for(i = 0; i = x; i +); x - 对应于 对应于 N 毫秒的循环值对于 STM32 系列微处理器来说,执行一条指令只有几十个 ns,进行 for 循环时,要实现 N 毫秒的 x 值非常大,而且由于系统频率的宽广,很难计算出延时 N 毫秒的精确值。针对 STM3
18、2 微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用 Delay(N)。( (二二) ) STM32STM32 SysTickSysTick 介绍介绍 Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计数器,SysTick 设定初值并使能后,每经过 1 个系统时钟周期,计数值就减 1。计数到 0 时,SysTick 计数器自动重装初值并继续计数,同时内部的 COUNTFLAG 标志会置位,触发中断 (如果中断使能情况下)。在 STM32 的应用中,使用 Cortex-M3 内核的 SysTick 作为定时时钟,设定每一毫秒产生一
19、次中断,在中断处理函数里对 N 减一,在 Delay(N) 函数中循环检测 N 是否为 0,不为 0 则进行循环等待;若为 0 则关闭 SysTick 时钟,退出函数。注:注: 全局变量全局变量 TimingDelayTimingDelay , , 必须定义为必须定义为 volatilevolatile 类型类型 , , 延迟时间将不随系统时钟频延迟时间将不随系统时钟频率改变。率改变。-_( (三三) ) STST SysTickSysTick 库文件库文件使用 ST 的函数库使用 systick 的方法1、调用 SysTick_CounterCmd() - 失能 SysTick 计数器2、调
20、用 SysTick_ITConfig () - 失能 SysTick 中断 3、调用 SysTick_CLKSourceConfig() - 设置 SysTick 时钟源。4、调用 SysTick_SetReload() - 设置 SysTick 重装载值。5、调用 SysTick_ITConfig () - 使能 SysTick 中断6、调用 SysTick_CounterCmd() - 开启 SysTick 计数器( (四四) ) SystemTickSystemTick 工程实战工程实战外部晶振为 8 MHz,9 倍频,系统时钟为 72MHz,SysTick 的最高频率为 9MHz(最大
21、为 HCLK / 8),在这个条件下,把 SysTick 效验值设置成 9000,将 SysTick 时钟设置为 9 MHz, 就能够产生 1ms 的时间基值,即 SysTick 产生 1ms 的中断。/* Configure the system clocks */RCC_Configuration();SysTick_Configuration();第一步第一步: : 配置配置 RCCRCC 寄存器寄存器 和和 SysTickSysTick 寄存器寄存器RCC_Configuration: 配置 RCC 寄存器void RCC_Configuration(void)/* RCC syste
22、m reset(for debug purpose) */RCC_DeInit();/* Enable HSE */RCC_HSEConfig(RCC_HSE_ON);/* Wait till HSE is ready */-_HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS)/* HCLK = SYSCLK */RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 =
23、HCLK/2 */RCC_PCLK1Config(RCC_HCLK_Div2);/* Flash 2 wait state */FLASH_SetLatency(FLASH_Latency_2);/* Enable Prefetch Buffer */FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* PLLCLK = 8MHz * 9 = 72 MHz */RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/* Enable PLL */ RCC_PLLCmd(ENABLE);/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 开发 学习 进修 入门 教学 教材
限制150内