OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2302|回复: 5

新手有个关于外部中断配置的问题不理解,解释一下

[复制链接]

2

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-4-18
在线时间
2 小时
发表于 2018-8-30 11:12:04 | 显示全部楼层 |阅读模式
1金钱
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
{
        u8 EXTADDR;
        u8 EXTOFFSET;
        EXTADDR=BITx/4;//得到中断寄存器组的编号
        EXTOFFSET=(BITx%4)*4;
        RCC->APB2ENR|=0x01;//使能io复用时钟                         
        AFIO->EXTICR[EXTADDR]&=~(0x000F<<EXTOFFSET);//清除原来设置!!!
        AFIO->EXTICR[EXTADDR]|=GPIOx<<EXTOFFSET;//EXTI.BITx映射到GPIOx.BITx
} 假如我用PC5外部中断,那么定义值分别为 BITx为5,EXTADDR为1。但PC5对应的外部中断配置寄存器为AFIO_EXTICR2;;;能解释下不?       

1.png

最佳答案

查看完整内容[请看2#楼]

这是stm32f10x.h的定义: typedef struct { __IO uint32_t EVCR; __IO uint32_t MAPR; __IO uint32_t EXTICR[4]; uint32_t RESERVED0; __IO uint32_t MAPR2; } AFIO_TypeDef; EXTICR[0]应该对应的是置寄存器AFIO_EXTICR1 EXTICR[1]应该对应的是置寄存器AFIO_EXTICR2
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-8-30 11:12:05 | 显示全部楼层
这是stm32f10x.h的定义:
typedef struct
{
  __IO uint32_t EVCR;
  __IO uint32_t MAPR;
  __IO uint32_t EXTICR[4];
  uint32_t RESERVED0;
  __IO uint32_t MAPR2;  
} AFIO_TypeDef;
EXTICR[0]应该对应的是置寄存器AFIO_EXTICR1
EXTICR[1]应该对应的是置寄存器AFIO_EXTICR2
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4522
金钱
4522
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-8-30 11:32:39 | 显示全部楼层
这个是原子已经写好的函数,你不用管AFIO_EXTICR了,自动配置完成的。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-8-30 11:42:08 | 显示全部楼层
你看手册啊,对应的
3(E5D1A4MQLWMEQ%YCK$B}F.png
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-4-18
在线时间
2 小时
 楼主| 发表于 2018-8-30 13:51:07 | 显示全部楼层
qiuzhicheng 发表于 2018-8-30 11:51
这是stm32f10x.h的定义:
typedef struct
{

奥,原来如此,少看个结构体,多谢了,我咋说不对
回复

使用道具 举报

2

主题

5

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2018-4-18
在线时间
2 小时
 楼主| 发表于 2018-8-30 13:52:45 | 显示全部楼层
warship 发表于 2018-8-30 11:32
这个是原子已经写好的函数,你不用管AFIO_EXTICR了,自动配置完成的。

我是在从头纯粹用寄存器练一遍例程,看到这有些疑问,谢谢回答
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 17:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表