OpenEdv-开源电子网

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

原子大哥哥,帮我分析下你例程在一个小问题。

[复制链接]

13

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-6-28
在线时间
13 小时
发表于 2012-7-2 16:33:39 | 显示全部楼层 |阅读模式

在你例程中的SYS.H中有个这段程序:
//Ex_NVIC_Config 专用定义
#define GPIO_A 0
#define GPIO_B 1
#define GPIO_C 2
#define GPIO_D 3
#define GPIO_E 4
#define GPIO_F 5
#define GPIO_G 6
#define FTIR   1  //下降沿触发
#define RTIR   2  //上升沿触发
上面这个宏定义是为SYS.C中的下面这个程序服务的
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
 //自动设置
 EXTI->IMR|=1<<BITx;//  开启line BITx上的中断
 //EXTI->EMR|=1<<BITx;//不屏蔽line BITx上的事件 (如果不屏蔽这句,在硬件上是可以的,但是在软件仿真的时候无法进入中断!)
  if(TRIM&0x01)EXTI->FTSR|=1<<BITx;//line BITx上事件下降沿触发
 if(TRIM&0x02)EXTI->RTSR|=1<<BITx;//line BITx上事件上升降沿触发
}
我不清楚上面那个专用定义跟下面这个有什么关系?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-7-2 17:06:31 | 显示全部楼层
回复【楼主位】xinhui:
---------------------------------
为了让你容易懂.方便记忆.

举个简单的例子:
你知道π的值是3.1415926535897932384626433832795
那么我定义一个#define I 3.1415926535897932384626433832795
下次你调用的时候,就直接写PI就好了,不用写那么长的数据.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

13

主题

39

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2012-6-28
在线时间
13 小时
 楼主| 发表于 2012-7-3 14:49:04 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
0000对应PA管脚。。。。。。0110对应PG管脚。你这样定义是为了到时候GPIOX偏移得到对应的位的,明白了。
谢谢啊。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 14:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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