热度 15
2012-3-7 13:49
1683 次阅读|
1 个评论
Open ADSP开源社区的ADSP-EDU-BF53X开发板教学视频第三集继续,ADSP-EDU-BF53X入门学习套件的教学视频第三集,主要讲解了Blackfin外设中的GPIO和中断的应用。Andy哥闪亮登场,声音略显羞涩,大家有什么GPIO方面的问题可以再此回帖,我们尽力解答。 视频和讲义如下。 优酷链接:http://v.youku.com/v_show/id_XMjg2OTIwNDQw.html 清晰版下载地址:http://u.115.com/file/bhzklxov 如需提取码,则是:bhzklxov 开发板链接:http://item.taobao.com/item.htm?spm=1103Qmdt.3-3dfNy.h-1Akvusid=9026190872 3.11 接口功能介绍 ADSP-BF53x处理器上有16个Programmable Flag接口,简称PF接口,这些接口就是通常所有的IO接口,通过寄存器配置,可以输出电平和感知接口电平,每一个PF接口都可以作为外部中断接口。 在单片机上,通常如果设置一个IO接口输出时,直接将输出信号值付给该接口,如果作为输入时,直接通过该接口读取即可。Blackfin处理器的IO使用与单片机不同,在使用前必须对该接口进行初始化,如告知接口的方向,如配置为输出接口,则直接配置输出接口电平信号,如配置为输入接口,需打开输入使能开关,配置输出信号触发方式,是否中断触发,是否双极性触发等等。初始化完成后,才能使用PF接口。 3.12 接口寄存器说明 PF接口主要寄存器功能与使用方法 PF寄存器 功能 FIO_FLAG_D 数据寄存器:通过该寄存器写入值设置接口电平和读取该寄存器值获取接口电平 FIO_FLAG_C 清楚标志位寄存器:将该寄存器内写1,相对应的PF管脚被清楚,电平置为0。写0则无效 FIO_FLAG_S 设置标志位寄存器:将该寄存器内写1,相对应的PF管脚被设置,电平置为1。写0则无效 FIO_MASKA_D 中断屏蔽数据寄存器A:设置PF管脚是否使用中断功能,写1则使用中断,写0则关闭中断 FIO_MASKA_C 中断屏蔽清楚寄存器A:清楚PF管脚的中断功能,写1则对应管脚关闭中断,写0则无效 FIO_MASKA_S 中断屏蔽设置寄存器A:设置PF管脚的中断功能,写1则对应管脚使用中断,写0则无效 FIO_MASKB_D 中断屏蔽数据寄存器B:设置PF管脚是否使用中断功能,写1则使用中断,写0则关闭中断 FIO_MASKB_C 中断屏蔽清楚寄存器B:清楚PF管脚的中断功能,写1则对应管脚关闭中断,写0则无效 FIO_MASKB_S 中断屏蔽设置寄存器B:设置PF管脚的中断功能,写1则对应管脚使用中断,写0则无效 FIO_DIR 方向设置寄存器:写1则对应管脚为输出,写0则对应管脚为输入 FIO_POLAR 极性设置寄存器:写1则0电平触发或下降沿触发,写0则高电平触发或上升沿触发 FIO_EDGE 沿触发寄存器:写1则对应管脚设置为沿触发,写0则对应管脚设置为电平触发 FIO_BOTH 双沿设置寄存器:写1则对应管脚设置为双沿触发,写0则对应管脚设置为单沿触发 FIO_INEN 输入使能寄存器:写1则对应管脚使能输入功能,写0则对应管脚关闭输入功能 3.13 例子代码分析 输入接口配置: 将PF0接口配置为输入接口,并且读出接口电平状态。 *pFIO_DIR = ~PF0; //设置PF0为输入 *pFIO_INEN |= PF0; //输入使能 i = *pFIO_FLAG_D; //读取数据 输出接口配置: 将PF0接口配置为输出接口,使用两种方式设置PF0输出高低电平。 *pFIO_DIR |= PF0; //设置PF0为输出 *pFIO_FLAG_S |= PF0; //PF0脚置高 *pFIO_FLAG_C |= PF0; //PF0脚置低 *pFIO_FLAG_D |= PF0; //PF0脚置高 *pFIO_FLAG_D = ~PF0; //PF0脚置低 3.14 代码实现功能 工程BF53x_GPIO_IN.dpj实现了读取PF0接口状态并打印出PF接口状态数据。 工程BF53x_GPIO_OUT.dpj实现了通过PF0接口不断的输出高低变化的电平。 3.15 测试结果 工程BF53x_GPIO_IN.dpj:运行代码后将PF0接口的电平状态打印在VDSP上。 工程BF53x_GPIO_OUT.dpj: 运行代码后PF0将不断变换高低电平。