基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章

上传人:飞*** 文档编号:56886201 上传时间:2018-10-16 格式:PPT 页数:105 大小:5.38MB
返回 下载 相关 举报
基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章_第1页
第1页 / 共105页
基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章_第2页
第2页 / 共105页
基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章_第3页
第3页 / 共105页
基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章_第4页
第4页 / 共105页
基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章_第5页
第5页 / 共105页
点击查看更多>>
资源描述

《基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章》由会员分享,可在线阅读,更多相关《基于STM32的嵌入式系统原理与设计 教学课件 卢有亮 第3章(105页珍藏版)》请在金锄头文库上搜索。

1、在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,基于STM32的嵌入式系统原理与设计 第三章 STM32软件开发,主讲教师: EMAL: 博客:http:/ 交流论坛:http:/ 开发板和教程: http:/ PPT原作者:卢有亮 有修改请发修改稿到论坛以更有利于其他人教学!,要点,STM32软件开发环境,从无到有构建我的第一个工程,GPIO寄存器、库函数操作,中断编程及实例,SPI 与I2C、SPI FLASH、TF卡编程及文件系统实例,液晶屏及触摸屏编程、汉字及图片输出实例,ADC和DAC编程及实例

2、,定时器编程及实例,网络编程及uIP应用实例,串口、DMA编程及实例,第三章 STM32软件开发,本章在最开始介绍STM32软件开发的环境,即开发软件MDK Keil及相关的下载,调试器。为了快速入门,给出第一个基于库函数设计的工程的全部详细流程,读者按照这个流程就可以快速构建基于库函数的工程,并学会下载和在线调试。 之后按功能分类,依次学习GPIO接口编程、异步串行通信USART编程、定时器编程、SPI接口编程、TF卡编程、I2C接口编程、ADC和DAC编程、FSMC液晶控制编程、网络编程等内容。对应的代码可以在交流论坛下载。 所有例程在亮点STM32开发板验证通过。,3.1 STM32软件

3、开发环境,MDK KEIL,要进行STM32的软件开发,除了具备必须的C语言能力,还需要掌握其开发工具MDK Keil。Keil软件的英文全称为 Keil ARM Microcontroller Development Kit tools,即Keil ARM 微控制器开发套件,其核心功能为可以为ARM和基于Cortex-M处理器的器件(STM32)创建和编写、编译C 和 C+ 代码,并支持在线调试、仿真等功能。 MDK(Microcontroller Development Kit)即微控制器开发套件,Keil就是这个软件的名字。,3.1 STM32软件开发环境 3.1.1 MDK Keil开

4、发环境,MDK KEIL,3.1 STM32软件开发环境 3.1.2 串口编程软件ISP,P74-76图3-2to3-6,程序设计和编译好之后,可以通过串口下载到目标板。ISP就能实现这一功能。现在市面上的开发板都提供串口下载的接口,且一般都是MiniUSB接口的,在板子上将USB转串口,亮点开发板也是这样的。通过串口下载直接方便快速。 ISP是在系统编程的英文缩写(In-System Programming),在线编程的意思。通过ISP,可以不用插拔芯片,也不需要编程器,就可以在目标板(例如亮点STM32开发板或读者设计的目标板)上直接编程(写FLASH)。,3.1 STM32软件开发环境

5、3.1.3 在线调试工具JLINK,P76,在MDK环境下编写的软件可以虚拟调试,也就是脱离开硬件,在PC机的WINDOWS环境下跑跑。但这样只能检查程序的基本流程,不能查看到存储器、寄存器的值,也看不到硬件的反应。脱离开硬件的调试意义不是特别大。怎么办呢? JLINK就是为支持在线调试而生的,使用JLINK连接到目标板,在MDK下就可以单步运行程序以及设置断点等,而程序的运行结果在硬件上能完全反映!,3.1 STM32软件开发环境 3.1.3 在线调试工具JLINK,P76,3.1 STM32软件开发环境 3.1.3 在线调试工具JLINK,P76,步骤 1.链接JLINK 2.”目标选项”

6、-”调试”,选择设备类型 (图3-7) 3.按“设置”进入JLINK的设置(P77 图3-8) 4.选择”flash下载”页框,配置目标板类型 (P78图3-9) 5.配置“UTILITY”页框 (P78 图3-10),3.1 STM32软件开发环境 3.1.3 在线调试工具JLINK,P76,步骤 6.设置断点,进入调试(P79 图3-11) 7.单步运行(P79 图3-12) 8.全速执行到断点(P80 图3-13) 提示:可以通过加入观察窗和内存窗口(在VIEW)子菜单下会帮助观察。,3.2 使用固件库开发我的第一个工程,P81,3.2.1 获取和理解固件库,P81,3.2.1 获取和理

7、解固件库,P81,固件库 1_htmresc目录下是ST的图标,跟开发完全无关。 2. Library目录是库文件的家,包含系统文件和大量的头文件、源文件 1)CMSIS子目录2)STM32F10x_StdPeriph_Driver子目录 3. Project下是例子程序,可以通过学习这些例程来入门提高,再者可以根据这些例程进行修改来快速构建自己的工程。 4. UTILITY下的官方评估板文件,1建立工作目录和子目录,拷贝库文件图(3-18) 2.建立和配置工程文件1)新建工程(图3-19)2) 器件选型(图3-20)3)选择是否复制启动文件(图3-21)4)分组管理(图3-23 24 25

8、26 27)5)配置工程(图3-28 29 30) 3. 编写代码新建和编辑main.c(图3-31 32 代码3-1)4. 编译代码(图3-33) 和查看编译后的结果(图3-34 35),3.2.2 我的第一个工程,5下载到开发板图(3-36 3-37) 6.用JLINK调试图3-38到3-45通过这一部分的学习,读者应该掌握了基于库函数建立工程的基本步骤,掌握整个代码开发、编译到下载调试的过程。,3.2.2 我的第一个工程,GPIO寄存器包括: 2个32位的配置寄存器GPIOx_CRL,GPIOx_CRH 2个32位的数据寄存器GPIOx_IDR,GPIOx_ODR 1个32位的置位/复位

9、寄存器GPIOx_BSRR 1个16位的复位寄存器GPIOx_BRR 一个32位的锁定寄存器GPIOx_LCKR。 以上所有寄存器不允许按位访问或字节访问,必须按32位字访问。,3.3 操作GPIO和管理中断 3.3.1 GPIO寄存器,32位的配置寄存器GPIOx_CRL,GPIOx_CRH,3.3 操作GPIO和管理中断 3.3.1 GPIO寄存器,32位的数据寄存器GPIOx_IDR,GPIOx_ODR,3.3 操作GPIO和管理中断 3.3.1 GPIO寄存器,1个32位的置位/复位寄存器GPIOx_BSRR,3.3 操作GPIO和管理中断 3.3.1 GPIO寄存器,1个16位的复位

10、寄存器GPIOx_BRR,3.3 操作GPIO和管理中断 3.3.1 GPIO寄存器,GPIO库函数一览表(3-2) 1)GPIO初始化函数GPIO_Init 2)读取指定端口管脚的输入GPIO_ReadInputDataBit 3)读取指定端口的输入GPIO_ReadInputData 4)设置指定端口的端口位GPIO_SetBits 5)清零指定端口的端口位GPIO_ResetBits 6)向指定GPIO数据端口写入数据 GPIO_Write 7) 选择GPIO管脚用作事件输出 GPIO_EventOutputConfig 8)使能或者失能事件输出GPIO_EventOutputCmd 9

11、)改变指定管脚的映射 GPIO_PinRemapConfig 10)选择GPIO管脚用作外部中断线路 GPIO_EXTILineConfig,3.3 操作GPIO和管理中断 3.3.2 GPIO库函数,NVIC库函数一览表(3-4) P1071)设置优先级分组:先占优先级和从优先级NVIC_PriorityGroupConfig 2)NVIC初始化函数NVIC_Init,3.3 操作GPIO和管理中断 3.3.3 嵌套向量中断控制器NVIC库函数,3.3 操作GPIO和管理中断 3.3.5 带按键控制的流水灯实验,3.3 操作GPIO和管理中断 3.3.5 带按键控制的流水灯实验,3.3 操作

12、GPIO和管理中断 3.3.5 带按键控制的流水灯实验,3.3 操作GPIO和管理中断 3.3.5 带按键控制的流水灯实验,3.3 操作GPIO和管理中断 3.3.5 带按键控制的流水灯实验,实现1)主程序 P110 (代码3-2)2)时钟使能函数clock_config的实现(代码3-3)3)LED和蜂鸣器端口配置函数led_init的实现(代码3-4 3-5)4)按键初始化函数key_init的实现 (代码3-6)5)中断配置函数exti_config的实现 (代码3-7)6)中断服务程序的实现(代码3-8),3.4 串口通信和DMA编程 3.4.1 串行通信USART库函数,串行通信库函

13、数在“stm32f10x_usart.h”中声明,在“stm32f10x_usart.c”中实现。外设库函数文件USART库函数(表3-6).,3.4 串口通信和DMA编程 3.4.2一个串口发送和中断接收例程的实现,1.串口初始化函数. 代码3-9,3.4 串口通信和DMA编程 3.4.2一个串口发送和中断接收例程的实现,2.修改主程序在上一节代码3-2(P110)的基础上,在代码exti_config();之后增加uart2_init(9600);即可。另外,在代码bp_config.h中需包含usart.h这个头文件。,3.4 串口通信和DMA编程 3.4.2一个串口发送和中断接收例程的

14、实现,3.写中断服务程序 代码3-10 4.编译下载将代码编译后,下载到目标板。计算机通过串口线连接到目标板的串口2(计算机TXD连目标板串口2的RXD,计算机RXD连目标板串口2的TXD,计算机地接目标板数字地)。当在计算机上用串口调试助手或超级终端等工具,向目标板发送字符的时候,会收到目标板发回的字符!,3.4.4 使用DMA和双缓冲兵乓操作实现串口接收发送,P119 图3-52 DMA方式串行通信双缓冲乒乓操作图示,3.4.4 使用DMA和双缓冲兵乓操作实现串口接收发送,1.添加DMA配置代码 (代码3-11) 2.修改时钟配置和中断配置代码(代码3-12) 3.实现DMA中断服务程序

15、(代码3-13) 4实现主程序(代码3-14),3.4.4 使用DMA和双缓冲兵乓操作实现串口接收发送,5执行效果 将代码下载到亮点STM32开发板,并在PC端运行串口调试助手。串口调试助手的设置及发送和接收到的数据如图3.53。,3.5 SPI与I2C编程,本节的内容是编程实现SPI及I2C,以及利用SPI和I2C访问具备该类接口的器件SPI FLASH、TF卡及EEPROM。 在SPI部分,使用SPI实现对SPI接口的串行FLASH (W25Q64)的编程以及对TF(Micro SD)卡的编程,然后是FAT32文件格式的编程实现。 在I2C部分实现对E2PROM的编程。,3.5.1 SPI

16、库函数,SPI库函数在“stm32f10x_spi.h”中声明,在“stm32f10x_spi.c”中实现。外设库函数文件SPI库函数见表3-8(P126),3.5.2 SPI FLASH原理,1.SPI FLASH基本结构 以W25Q64为例 有32K个256B的页页 扇区 块 2 控制和状态寄存器 表3-9 W25Q64控制和状态寄存器 3.数据读写实现页编程指令时序(P128 图3-54 )页编程代码(P128 代码3-15)无校验的写数据函数实现(P219 代码3-16)读数据时序(P129 图3-55)读数据代码 (P130 代码3-17),3.5.3 SPI FLASH编程实验,实验内容: 1.初始化SPI接口 2错 3.向SPIFALSH地址0x12AB00开始写一串字符,再读出比较判断是否与写入的一致 4.向SPIFALSH地址0x12AB00开始写连续9999个字节,第一次写0,写完后读出中间一个字节,如果为0则正确;然后写9999个1再读出判断。当写完255后再从0开始直到永远 。.读取SPIFLASH的ID,如果正确继续,否则报错。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号