ARM-CORTEX-M3(EasyARM1138)

/*转自本人新浪博中的记录,时间:2010-09-19 18:46:20

经过几天的学习,终于能在arm上写自己的程序了,但是在操作系统的移植上还存在困难,下面把这几天学ARM-cortex的心得和大家分享一下,其实我认为它和51单片机差不多,只要会定义了I/O口就能对它进行控制了,主要就是先熟悉它的:输入/输出,中断,定时器,之后就可以像写单片机一样给它写程序了,下面上传两个自己写的程序和大家分享一下。

矩阵键盘程序:

#include"SystemInit.h"
#define uchar unsigned char
#define uint unsigned  int
uint i;
uchar y;
#define A_PERIPH  SYSCTL_PERIPH_GPIOA
#define PA        GPIO_PORTA_BASE

#define B_PERIPH  SYSCTL_PERIPH_GPIOB
#define PB        GPIO_PORTB_BASE
#define PB1       GPIO_PIN_1

#define F_PERIPH  SYSCTL_PERIPH_GPIOF
#define PF        GPIO_PORTF_BASE
#define PF_PINS   GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7
#define PF_READ   GPIOPinRead(PF,PF_PINS)
const uchar table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
void delay(uint ms)
{
    SysCtlDelay(ms*TheSysClock/3000);
}
void show()
{
    GPIOPinWrite(PA,0xff,table[i]);
    //delay(1000);
}
void keyscan()
{
    GPIOPinTypeOut(PF,0xff);
    GPIOPinWrite(PF,0xff,0xfe);
    GPIOPinTypeIn(PF,PF_PINS);
    switch(PF_READ)
    {
      case 0xee: i=0;
           break;
      case 0xde: i=1;
           break;
      case 0xbe: i=2;
           break;
      case 0x7e: i=3;
           break;
    }
    GPIOPinTypeOut(PF,0xff);
    GPIOPinWrite(PF,0xff,0xfd);
    GPIOPinTypeIn(PF,PF_PINS);
    switch(PF_READ)
    {
      case 0xed: i=4;
           break;
      case 0xdd: i=5;
           break;
      case 0xbd: i=6;
           break;
      case 0x7d: i=7;
           break;
    }
}
int main(void)
{
    jtagWait();
    clockInit();
    SysCtlPeriEnable(A_PERIPH);
    GPIOPinTypeOut(PA,0xff);
   
    SysCtlPeriEnable(B_PERIPH);
    GPIOPinTypeOut(PB,PB1);
    GPIOPinWrite(PB,PB1,0x00);
   
    SysCtlPeriEnable(F_PERIPH);
    GPIOPinTypeOut(PF,0xff);
    GPIOPinWrite(PF,0xff,0xfe);
    GPIOPinTypeIn(PF,PF_PINS);
    while(1)
    {
       keyscan();
       show();
     
    }
}
注意:在每次改变I/O的输入/输出状态之后,都要对它重新定义是输入还是输出,我开始的时候就是在这上面转了很长时间。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值