你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】关于AN4065中STM32F0 IAP升级后的外部中断不响应...

[复制链接]
沐紫 发布时间:2015-12-16 16:39
前言
4 x# t0 Y* _) ?+ \" V客户在使用STM32F051C8T6的IAP功能时,发现有些端口(比如PB端口)的外部中断端口没有反应,但是有些还是可以的(比如PA端口),不知是何原因,客户也验证过应用代码在没有使用IAP功能时是没有问题的。客户是参考了我们的应用笔记AN4065来编写这部分代码.0 a1 r, F4 u% ~% N( ^

2 g4 `4 M1 t' }4 m问题分析( Z, L, C- c1 K5 ?
应用代码' e( C; {5 r4 e: d6 Q6 e# }
通过查找客户的应用代码,发现如下API函数的调用:
& [8 V9 K6 X# b5 |; r2 l. ^
% b' r! W: h; i; a/ k1 J8 e红色标记的API函数此处是有问题的,在此处应该将RCC_APB2PeriphResetCmd函数替换为RCC_APB2PeriphClockCmd函数。这个在AN4065的附件工程中也是这么写的,所以应该是代码的问题。修改后的代码如下,修改之后,程序正常运行了.
: ?, T5 O# p0 B/ X8 y
% k3 T9 F1 }8 v! J
: O8 `' d8 g5 l" A  }0 F" G深入研究
- A/ u" X- n5 a1 W: @7 q  `+ _: S这个问题其实是这样的:因为SYSCFG寄存器的时钟被关闭了,所以才造成一些外部中断没有响应。
8 \: J/ Q( ^3 s$ t( G6 y3 o& R9 }0 |首先:我们看看RCC_APB2PeriphResetCmd(RCC_APB2Periph_SYSCFG, ENABLE);这个函数做了哪些操作,它是应该是如何工作的?+ q' b9 H% x# R. A. F, O! b
在APB2PeriphResetCmd()函数中得知这个函数是设置RCC->APB2RSTR的对应位,如果设置了这个寄存器的对应位,那么对应的外设(或者是寄存器)的时钟就被关闭了,那么这个函数本来应该如何工作的呢?通过查看我们的库文件,这个函数只有在PPPP_DeInit()中才会使用,而且是一对儿一对儿的出现:
6 f- }6 a  z! s' n, K: x  C
' p) d/ w( j  m; P0 }0 G! k
' a: j& @+ S; y# ^" w& e6 O还有很多的例子,就不一一列出了。总之是为了简单的把一个外设或者是寄存器的值恢复到出厂设置,就可以通过调用两次这个函数来做到(比一个一个位清除要来的快),但是如果单独的只是调用了一次,比如客户代码中的情况,那么就是时钟被关闭了(这个可以简单的通过一个GPIO来测试,我已经测试过了,只要单独的设置上这个位,那么这个外设就肯定不工作了,无论你是不是开启这个外设的时钟在RCC_ AHBENR中),所以这个寄存器该起到的效果都没有了。关于RCC_APB2PeriphClockCmd()这个函数就很简单了,只是打开对应外设的时钟而已,就不说了.
# z4 z, r$ l1 p4 x+ t; @4 ^
4 \  y' t; w, R6 y其次,我们再来看看这个SYSCFG寄存器,为啥没有时钟了,它看起来好像也在工作呢?; h5 ~; a3 }" f8 ^! m" A
+ A* W% Q& H! Q2 y4 ^
看看画红线的地方就行了,他是用来重映射内存地址和管理外部中断连接到GPIO的。在默认的时候,这个寄存器的时钟是关闭的,所以默认都是从Flash的起始地址开始运行,外部中断也都连接到GPIOA上,只有需要修改的时候我们才会去开启这个寄存器的时钟,并做对应的修改。 这也就是解释了,为什么客户有的GPIO是好使的(GPIOA是OK的),有些GPIO是不好使的(GPIOB 上的就不好使).& y$ |( v2 T, V! s  i

+ E7 `9 o8 E3 A! z/ M总结:7 ]# v" a# {' q; d7 o
根本原因是应用代码中API调用错误,一般客户在自己建立工程的时候,又不是很了解如何在开始的时候去设置这个地方造成的。需要以后的工程师在参考AN4065中注意一下这个地方.6 n% B- J; A7 s/ v; g
$ H1 u- k- I3 z% H5 S
# N* U! b* F4 V8 X% A) [
对应PDF:关于AN4065中STM32F0 IAP升级后的外部中断不响应问题  y- G5 f8 n+ n# v& H' ?* i6 K

$ u* Q6 j, G1 y1 p2 T8 ]' r
赞 收藏 1 评论2 发布时间:2015-12-16 16:39

举报

2个回答
党国特派员 回答时间:2015-12-17 09:25:41
长知识了。。。。。。。。 blank.png blank1.png blank2.png blank3.png blank4.png
shanji 回答时间:2015-12-18 14:21:26
收下啦,

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版