您的位置 首页 软件

ARM入门笔记(4)

键盘输入——IO输入实验一.实验目的能够正确读取PIO的管脚状态,实现当有按键按下时,LED点亮,否则灭。二.实验程序和参数设置1>连接器

键盘输入

——I/O输入试验

一.试验意图

可以正确读取PIO的管脚状况,完成当有按键按下时,LED点亮,不然灭。

二.试验程序和参数设置

1>连接器选项设置和发动代码都与上个试验相同

2>C言语的代码

#i nclude “AT91SAM7S64.h” //特别功用寄存器头文件。相似与51单片机中reg51.h
#i nclude “Board.h” //界说方针板的头文件
int main(void)
{ unsigned int Key_Val;//界说变量,unsigned int为32位,C51是16位
*AT91C_PIOA_PER = LED_MASK | SW_MASK;//使能LED、KEY脚I/O口功用 *AT91C_PIOA_ODR = SW_MASK;//使能4个KEY对应管脚的输入功用
*AT91C_PIOA_OER = LED_MASK;//使能4个LED管脚的输出功用
while (1)
{
Key_Val = *AT91C_PIOA_PDSR;//读管脚的电平状况
if (Key_Val & SW1)
{
*AT91C_PIOA_SODR = LED1;//将状况反映给LED
}
else
{
*AT91C_PIOA_COER = LED1;//按钮按下时,LED1亮
}
}
}

三.呈现的问题与解决方法

1> 不管作输入用的I/O口电平怎么改变,管脚状况寄存器(AT91C_PIOA_PDSR)的内容一直为0,即I/O口的输入功用没起作用。
原因是AT91SAM7Sxx内部集成了功率办理操控器,用它来操控一切外设的时钟以到达优化功耗的意图。所以只有使能了PIO的外围时钟,PIO外设才会作业,才干读入输入管脚的状况。那么为什么PIO作为输出时不需求使能外围时钟呢?我个人认为这与内部外设在数字电路上的完成有关,输出功用只需求组合逻辑电路(不必时钟)就能完成,而输入功用则需求用到时序逻辑电路(需求时钟)才干完成。
因而,有必要在main()函数的最初添加如下两条时钟使能的句子:

*AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能体系时钟寄存器的处理器时钟
*AT91C_PMC_PCER = 1 91C_ID_PIOA; //使能PIOA外围时钟

四.总结

当要使AT91SAM7S64特定的外设作业时,有必要使能相应外设的时钟操控寄存器。相反,假如不必相应的外设,禁能相应的时钟可以降低功耗

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/254314.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部