全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统 STM32 微控制器 实训指导书 意法半导体公司的 STM32 微控制器具有 32 位字长的 CPU 使用精简指令系统 RISC 精简指令系统的指令字长固定 译码方便 相对于复杂指令系统 CISC 精简 指令系统的处理效率更高 具有 32 位字长 CPU 的 STM32 系列微控制器的处理能力远高于 8 位和 16 位单片机 同时集成了与 32 位 CPU 相适应的强大外设 如双通道 ADC 多功 能定时器 7 通道 DMA SPI 等 能够完成过去一般单片机所无法达到控制功能 现在 已经形成了以 8 位单片机为主流的低端产品和以 32 位微控制器为主流的高端产品两大市场 对于自动化领域的从业人员 了解 32 位微控制器的结构 特点 掌握其使用方法 是很有 必要的 一 关于学习方法 此前 我们已经学习过 C 语言程序设计 微机原理 单片机原理及应用 等相 关课程 这些课程的学习是系统的 完整的 全面的 是有老师讲授的 这种学习方法 适合在学校学习一些重要的基础理论课程 在工作中 我们常常会遇到新的东西 需要以 已有的知识作为基础 去解决问题 完成任务 这就需要不同于前述的另一种学习方法 这种方法是建立在自学基础上的 以解决实际问题为目的 允许通过局部的 模仿性的手 段 来实现既定目标 这种方法在工程实践中的应用是非常普遍的 白猫黑猫 能抓住老 鼠就是好猫 能解决问题的方法就是好方法 本次实训采取的方法是 将参考资料发给同学 同学自学其中需要的部分 在指导教 师引导下 体验各个控制项目 理解各组成部分 再以原控制软件为基础进行修改和移植 获得要达到的控制效果 在本次实训中 我们使用的微控制器型号为 STM32F103RB STM32F103RB 是 STM32 微控制器系列中的一种 内部具有 128KB 程序存储器 20KB 随机读写存储器 1 个 16 位高级定时器 3 个 16 位通用定时器 2 个 SPI 2 个 I2C 3 个 USART 1 个 USB 1 个 CAN 2 个 ADC 芯片为 64 引脚 LQFP 封装 有 51 个 I O 引脚 开发环境使用 Keil uVision4 MDK 它是我们学习 51 内核单片机时使用的 Keil uVision2 和 Keil uVision3 提高版本 具有相同或相似的界面及使用方法 STM32 微控制器的结构与 MCS 51 单片机是相似的 也是用读写寄存器来使用内部 的个部件 但是 STM32 的规模庞大 远非 51 内核单片机可比 完成一个复杂的功能 可能需要操作多个寄存器的多个位 掌握其使用方法确有一定难度 为了解决这个问题 意法半导体公司提供了固件库 有了固件库 我们就可以调用函数来实现所需要的功能 这比通过操作寄存器实现就容易多了 二 关于实训环境 实训是在一套基于 STM32 微控制器的实验装置上进行的 装置采用积木式结构 由 J LINK V8 仿真器 主板 最小系统板 12864 液晶显示屏 3 2 TFT 彩色液晶触摸屏 显示及键盘板 10M 网络接口板 USB RS 232 转接线等组成 下面对将要使用的硬件 软件作简要说明 1 微控制器 在本次实训中 我们使用的微控制器型号为 STM32F103RB 它是 STM32 微控制器系列中的一种 内部具有 128KB 程序存储器 20KB 随机读写存储器 1 个 16 位高级定时器 3 个 16 位通用定时器 2 个 SPI 2 个 I2C 3 个 USART 1 个 USB 1 个 CAN 2 个 ADC 芯片为 64 引脚 LQFP 封装 有 51 个 I O 引脚 2 开发环境 使用 Keil uVision4 MDK 它是我们学习 51 内核单片机时使用的 Keil uVision2 和 Keil uVision3 提高版本 具有相同或相似的界面及使用方法 3 J LINK 仿真器 仿真器连接计算机的一个 USB 口和 STM32 微控制器的几个专用位 使得计算机可以对微控制器进行下载 调试 4 固件库 STM32 微控制器的结构与 MCS 51 单片机是相识的 也是提高读写寄存 器来使用内部的个部件 但是 STM32 的规模庞大 远非 51 内核单片机可比 完成一个 复杂的功能 可能需要操作多个寄存器的数个位 掌握其使用方法确有一定难度 为了解 决这个问题 意法半导体公司提供了固件库 有了固件库 我们就可以调用函数来实现所 需要的功能 这比通过操作寄存器实现就容易多了 三 软件及文档说明 发给大家的电子文档中 汇集了多种资料和软件 下面把最常用的一些作分类介绍 1 入门资料 STM8 32 选型手册 pdf STM32F10 x 常见应用解析 2008 年 9 月 pdf STM32 的优越外设介绍 2007 年 12 月 pdf STM32 应用中的常见问题 pdf STM32 硬件设计问题解答 pdf 以上文档在 stm32 资料 常用资料 文件夹下 2 硬件资料 STM32 中文参考手册 V10 pdf 在 stm32 资料 常用资料 文件夹下 3 固件库资料 STM32 固件库使用手册的中文翻译版 pdf STM32 固件库 v3 5 变更指 南 doc 中文手册只到 2 0 版本为止 现在通用的是 3 5 版本的固件库 所以参考变更指南 以上文档在 stm32 资料 常用资料 文件夹下 4 STM32F103RB 芯片资料 STM32F103x8B DS CH V10 pdf 在 STM32 芯片数据 手册 STM32 中文数据手册 5 实训装置资料 STM32 实验系统 pdf 6 配置 STM32 微控制器的系统时钟以及使用嘀嗒时钟 定时器 的资料 在 stm32 资料 stm32 时钟及 systick 文件夹下 7 介绍 STM32 微控制器的位带操作的资料 在 stm32 资料 STM32 位带 文件夹 8 介绍 STM32 微控制器的中断系统的资料 在 stm32 资料 stm32 中断 文件夹下 9 介绍 STM32 微控制器的中断系统的资料 在 stm32 资料 STM32 定时器 文件夹 10 STM32 的 V3 5 0 固件库环境及模板及例程 STM32F10 x StdPeriph Lib V3 5 0 文件夹 四 实训项目及日程 第一天 第一天 任务 1 学习 STM32 微控制器资料 熟悉 Keil MDK 软件和 J LINK 仿真器的安装与 使用 学习 LED 灯控制软件结构 弄懂其 SysTick 延时的原理和使用方法 弄懂 GPIO 的 输出控制方法 2 修改 SysTick 延时时间和输出控制方案 得到新的 LED 发光组合 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 01 跑马灯 导学 STM32F10 x StdPeriph Lib V3 5 0 文件夹集合了 STM32 的固件库 V3 5 0 版 物电学院 ARM 实验室 和 物电学院 uCOS 实验室 两个文件夹中有多个应用工程范 例 其中 物电学院 ARM 实验室 STM32F10 x 模板 已进行了必要的部件初始化 主要 是时钟部分和对串口 printf 函数的支持 加入应用程序后即可工作 时钟部分的初始化设 置为使用外部高速时钟 8MHz 经分频获得工作主频 72MHz 供定时器 2 7 和窗口 看门狗以及备份接口使用的时钟频率为 36MHz 供定时器 1 8 和 ADC 以及 GPIOA GPIOE 等使用的时钟频率为 72 MHz STM32F103Rx 实验 01 跑马灯 中因为不 需要使用串口 拿掉了 usart c 这个支持串口的文件 delay c 是用来使用嘀嗒时钟实 现延时的 在 51 内核单片机中 短暂延时常用软件循环实现 这种做法在汇编语言中很简 单 在 C 程序中就比较困难 因为不知道编译后会生成什么机器码 耗用多少时间 在 STM32 中这个问题就更突出 好在 STM32 中有一个嘀嗒时钟 它原本是用于嵌入式系统 软件中提供基本时钟的 在不使用嵌入式系统软件时可以用来作短暂延时用 注意 这种 延时方法同软件延时一样是占用 CPU 的 一般仅适用于短暂延时或任务很轻 CPU 富余量 很大的场合 led c 是用于对驱动 LED 的端口进行初始化的 STM32 集成了太多的外设 对于一个控制项目 可能很多外设是用不上的 为了尽量降低功耗 所有外设的时钟在复 位后都是关闭的 这样外设就不工作也不耗电 如果要使用某个外设 首先要打开它的时 钟 以及进行一些相关的初始化 对端口写 0 或 1 有 4 种方法可使用 第一种方法 是使用库函数 GPIO WriteBit 既可写 0 也可写 1 但速度最慢 第二种方法是使用库 函数 GPIO ResetBits 和 GPIO SetBits 可分别写 0 或 1 速度比较快 第三种方法是 直接操作寄存器完成写 0 或 1 本质上与第二种方法是相同的 但更直接 因而也更 快一点 第四种方法是使用位带操作 速度是最快的 以上操作速度的差别 在非连续操 作时是很小的 可以忽略不计 delay h 和 led h 分别是 delay c 和 led c 的头文件 Keil uVision4 MDK 界面中 用来将编译后生成的目标代码文件 hex 下载到 STM32 微控制 器的 FLASH 中 可打开工程管理器 这两个操作是原来的 Keil uVision2 和 Keil uVision3 中没有的 第二天 第二天 任务 1 学习按键输入 扫描方式 软件结构 理解以扫描方式管理按键的工作原理 和特点 2 对按键的输入响应进行修改 获得与原软件不同的 LED 响应效果 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 02 按键输入 扫描方式 导学 这个工程中新加入了 key c 文件 在 key c 中有 2 个函数 KEY Init 是对按键 所在端口进行输入初始化的 KEY Scan 是对按键进行扫描的 在 KEY Scan 中为了举 例 轮流使用 2 种方法对按键所在端口进行判断 分别是库函数法和位带法 实际使用任 何一种均可 KEY Scan 的核心任务有 有键按下时能识别并返回该键编码 0 3 无键按下返回 0 xff 即 255 能够排除键按下和松开时的抖动 不致发生误判 允许 键较长时间按下 不致误判为多次按键 为此 采取的措施有 发现有键按下后间隔 20mS 再判一次 若仍为按下才确认此状态 只有在当前键状态为键松开时 又有键按 下才返回键按下编码并进入键按下状态 确认 4 个键均松开后进入键松开状态 使用 KEY Scan 进行键扫描 最长可耗时数十毫秒 key h 是 key c 的头文件 第三天 第三天 任务 1 学习按键输入 外部中断方式 软件结构 与比扫描方式管理按键进行比对 理解以外部中断方式识别按键状态改变的优势 2 对按键的输入响应进行修改 获得与原 软件不同的 LED 响应效果 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 03 按键输入 外部中断方式 导学 使用键扫描的方法对键状态进行识别 就需要不断调用 KEY Scan 这会对 当前的工作造成较大影响 如果我们希望在按键没有按下时 不会干扰当前的工作 而一 旦有键按下又能够马上响应 这就要用到中断 文件 exti c 中 函数 EXTI InitInit 对 I O 端口的中断进行初始化 设置 4 个按键端口为上升沿和下降沿均产生中断 KEY1 Down KEY4 Down 和 KEY1 Up KEY4 Up 是标志 4 个上升沿和下降沿的全局变量 在 4 个中断服务函数中 调用 LevelDistinguish 函数判断当前中断是上升沿还是下降沿 设置对应的变量 在主函数 main 中判别变量 驱动 LED 事实上 对 LED 的处理也可以 放在中断服务函数中处理 这样就可以做到对主函数中的正常工作的极小干扰 在主函数 中调用了库函数 NVIC PriorityGroupConfig NVIC PriorityGroup 2 设置使用 4 级抢占优 先级和 4 级响应优先级 这两种优先级的区别是 抢占优先级是可以嵌套的 即低抢占优 先级的中断服务可以被高抢占优先级的中断请求打断 响应优先级是不能嵌套的 高响应 优先级的中断请求不能打断低响应优先级的中断服务 但不同响应优先级的中断源同时发 出中断请求时 CPU 会先响应高响应优先级中断请求 在文件 exti c 中 NVIC Init NVIC InitStructure 库函数设置抢占优先级和响应优先级均为 0 级 第四天 第四天 任务 1 学习串口 中断软件结构 理解以字符串打印方式发送 中断方式发送 中 断方式接受的特点及使用方法 在软件中添加 LED 驱动和按键扫描文件 2 修改程序以 实现 按 KEY1 键用字符串打印方式发送一个 KEY1 按 KEY2 键用中断方式发送 KEY2 接收到 KEY1ON 和 KEY1OFF 使 LED1 发光和熄灭 接收到 KEY2ON 和 KEY2OFF 使 LED1 发光和熄灭 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 05 串口 中断 导学 此工程由模板增补而成 在文件 usart int c 中的 USART1 Init 中使能了串口中 断 USART1 IRQHandler 是串口中断服务函数 文件 usart int c 中定义了 TxBuffer1 255 和 RxBuffer1 255 分别为串口发送缓冲区和串口接收缓冲区 定义了 TxCounter1 和 RxCounter1 为串口发送计数器和串口接收计数器 在 usart int h 中 将上述变量声明为外 部变量 在主程序中 通过串口发送信息有两种方法 调用 printf 函数 将待发送的 ASC 码按顺序逐一放入 TxBuffer1 中 再向 TxCounter1 存入待发送的字符数 第一种方法 其间 CPU 一直由 printf 函数占用 直到发送完毕才退出 但使用方便 功能强 第二种方 法 在完成对 TxBuffer1 和 TxCounter1 的赋值后 对串口的发送操作是在中断服务函数中 完成的 对 CPU 的占用极少 串口接收是由其他设备的串口发送引起的 接收到的信息放 在 RxBuffer1 中 字符数放在 RxCounter1 中 当判断 RxCounter1 0 且 100mS 未发生变化 即认为一次接收完成 串口通信的参数为 波特率 9600 数据位 8 位 停止位 1 位 无奇 偶校验 通信的另一方应按此设置 第五天 第五天 任务 1 学习定时器 2 定时中断软件结构 理解定时器 2 定时中断的使用方法 2 修改程序 使定时器 2 每 5 秒中断一次 在中断处理中对自动次数进行记录并通过串口发 送中断次数 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 11 定时器 2 定时中断 导学 使用定时器定时中断 可以不干扰主程序的工作 在定时时间到来时进入定时 中断服务程序 文件 timer c 中的定时器初始化函数 TIM2 Init u16 arr u16 psc 中的 arr 是 定时器的自动重装值 psc 是时钟预分频数 0 是不分频 1 是 2 分频 以此类推 主函 数中的 TIM2 Init 5000 7199 即为时钟预分频数 7200 自动重装值 5000 由于时钟是 72MHz 每 0 5S 发生一次中断 改变 arr 和 psc 可以得到不同的中断周期 文件 timer c 中 的 TIM2 IRQHandler 是定时器 2 的中断服务函数 可在其中进行你需要的操作 但必须 保证在下一次中断到来之前退出 第六天 第六天 任务 1 学习定时器 3PWM 输出软件结构 理解用定时器 3 产生 PWM 的方法 达 到改变 PWM 的频率和占空比的目的 2 修改程序 在软件中添加按键中断文件 用 KEY1 和 KEY2 控制 LED1 的亮度 即每按 KEY1 和 KEY2 一次分别使输出到 LED1 的 PWM 占空比增加和减少 20 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 12 定时器 3PWM 输出 导学 文件 timer pwm c 中的 TIM3PWM Init u16 arr u16 psc 函数设定 TIM3 工作在 PWM 状态 Arr 和 psc 的作用与上一范例相同 定时器 TIM3 工作在向下计数方式 重装 值为 900 使用库函数 TIM SetCompare1 TIM3 ii TIM SetCompare4 TIM3 ii 可设定 PWM 比较值 这个值应在 0 900 之间 定时器 TIM3 的计数器值 PWM 比较值时对应引脚输 出低电平 否则输出高电平 这样 当 PWM 比较值大时引脚输出的低电平占比也比较大 LED 亮度也就比较高 如果将 TIM3 的计数方式修改为向下计数 结果则相反 改变 arr 可 以改变 pwm 的精度 改变 psc 可以改变 pwm 的频率 第七天 第七天 任务 1 学习 DS18B20 测温软件结构 理解数字温度传感器 DS18B20 与 STM32 微 控制器的硬件接口和软件驱动方法 2 在软件中加入 LED 驱动文件 修改程序 实现若 温度高于设定的上限则 LED1 亮 低于设定的下限则 LED4 亮 在上限和下限之间则 LED2 和 LED3 交替发光 范例工程 STM32F10 x StdPeriph Lib V3 5 0 物电学院 ARM 实验室 STM32F103Rx 实验 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防安全技术实务课件
- 汽车安全第7章教案课件
- 临时支架设计与检算技术讲义课件
- 中考一模试题 4
- 中小学教师信息技术教育素养测试题
- 2025年海南公务员考试真题附答案
- 《统计学》练习题-客观题
- 下半年天津注册土木工程师:岩土考试试卷
- 大学团结策划方案
- 急性阑尾炎测试题及答案
- 专题12 记叙文阅读写人记事专项训练(解析版)
- 2025云南楚雄州元谋县国有资产投资管理有限公司及所属子公司合同制员工招聘13人笔试考试备考题库及答案解析
- (2025年版)儿童肺炎支原体肺炎诊疗指南解读
- 2025贵州茅台(集团)生态农业产业发展限公司招聘21人易考易错模拟试题(共500题)试卷后附参考答案
- 分式计算题强化训练(12大题型96道)解析版-八年级数学上册
- 冬季防冻防烫伤指南
- 【飞瓜数据】2025年休闲零食线上消费市场洞察
- 2025广东深圳市龙岗区国资国企系统面向全市集中选聘中层管理人员考试及考察笔试历年参考题库附带答案详解
- 2025年吉林事业单位招聘考试职业能力倾向测验试卷(石油化工)
- 水利渠道安装光伏施工方案
- 跨部门项目团队沟通记录表
评论
0/150
提交评论