一个菜鸟STM32寄存器学习笔记4_外部中断.pdfVIP

一个菜鸟STM32寄存器学习笔记4_外部中断.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
看了一下《STM32 不完全手册》上的内容发现从按键后面的内容基本上都要涉及到中断。所 以决定先把中断搞定。以前使用中断很是混乱基本都是对着示例程序改改实现功能就好了。 但从回过头来看看发现中断还是很复杂的。 这里先把我学习的中断的相关知识梳理一下: 1. 中断是CM3 核自带的。所以中断要在《CM3 权威指南》中阅读。《STM32 中文参考手册》 里介绍的不全。 2. CM3 内核中规定的可编程中断源有240 个,但STM32F103 只使用了前68 个,这68 个 中断源和编号在STM32F10X.H 文件170 行有定义 3. STM32 中断和51 中断不同的地方有: a) STM32 多了一个中断分组的概念,这个分组操作在程序中建议只操作一次就可以。 中断分组用来决定抢占优先级和子优先级的取值范围。 b) STM32 的每个中断源都有两种优先级,抢占优先级和子优先级。这两个优先级的取 值范围由中断分组决定。抢占优先级用来中断低抢占优先级的程序。子优先级用来 在抢占优先级相同时决定谁先执行。这两个优先级就好比汽车在过收费站,在汽车 过收费站时有两个参数决定你什么时候过。第一你的汽车是什么类型的车,第二你 前面还有多少车。第一个属性就好比抢占优先级。警察的车比普通的车的优先级高 就能插到前面先过收费站。第二个属性好比子优先级。都是普通的小车说明抢占优 先级都一样,谁先过就看你现在排队排的几号。 4. 中断服务函数是根据函数名来决定的,这个函数名是在.s 的启动文件中定义好的。 5. 其他的和51 就没什么差别。初始化,等待触发中断,进中断服务函数,执行完中断函数 清除中断标志,返回继续执行其他程序。 下面就根据外部中断实现一个按键点亮LED 按照以下步骤进行 1. 中断初始化 a) 设置中断分组 SCB-AIRCR b) 使能外部中断 NVIC-ISER c) 对外部中断的优先级设置 NVIC-IP 2. 按键初始化 a) 按键时钟使能 RCC-APB2ENR b) 复用时钟使能 RCC-APB2ENR c) 按键相关IO 口初始化 GPIOB-CRL d) 把按键引脚和对应的外部中断线连接 AFIO-EXTICR e) 外部中断使能 EXTI-IMR f) 设置触发方式 EXTI-RTSR 3. LED 初始化 4. 编写中断服务函数 第一步 中断初始化 这里先举个例子来理解中断分组和中断源,抢占优先级,子优先级的关系 比如一个公司有68 个人 ,先给这68 个人编了0~68 的编号(表示68 个可编程中断源, 如串口中断,外部中断0 ,外部中断1 等) 现在公司要求每人都要被编个号,这个编号分成两个部分字母部分和数字部分,编号的 大小决定了这个人在公司的地位。并规定编号越小地位越高。但是这个编号的取值范围是根 据公司的规章制度决定的。比如规章制度上规定了字母编号只能在2^3 (2 的3 次方)以内 (即只能是A~H ),数字编号只能是2^1 以内(即0 或者1)。 (表示中断分组,字母是抢 占,数字是子优先级) 又有一个规定在打饭时如果字母大的在打饭但字母小的也来打饭了 则字母大让字母小的打完了自己在继续打饭。如果字母相同的一起来打饭,就看谁的数字编 号小谁就打饭。但是如果字母相同但数字编号大的先打饭,那么后来的编号小的不能插到编 号大的前面打饭。 换句话说就是字母的等级比编号的等级高,字母小的可以插队到字母大的前面。但是相 同字母的不能根据数字编号大小来插队。 例如:现在有几个人编号是这样的 个人编号 工作编号 0 A00 3 A01 5 B01 7 C01 65 B00 1. 比如个人编号为7 号的在打饭,3 号和0 号一起去了,那么7 号要让3 号和0 号插队, 由于3 号数字编

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档