打印
[Cortex-M0技术交流]

第一次写的程序~

[复制链接]
1657|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qq124469142|  楼主 | 2011-10-8 18:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
gp, IO, GPIO, pi, se
本帖最后由 qq124469142 于 2011-10-8 20:33 编辑

小灯程序
本程序实现了key1控制3,4灯。key2控制1,2灯;
本人第一次写程序,写的不好,方法也很笨。
由于学校里网速的原因,我打不开芯唐官网,所以程序是在别人的模板上,自己写的
int main (void)
{
    uint8_t flag1 = 0,flag2 =0;
uint8_t count1 = 0,count2 =0;
Set_System();        //封装一些初始化模块
           
     
                 DrvGPIO_SetBit(E_GPA,2);
     DrvGPIO_SetBit(E_GPA,3);
     DrvGPIO_SetBit(E_GPA,4);
     DrvGPIO_SetBit(E_GPA,5);              
while(1)
{    if(DrvGPIO_GetBit(E_GPB, 14)==0)
       { delay_ms(30);
     if(DrvGPIO_GetBit(E_GPB, 14)==0)
     flag1=1 ;
      }
     if(flag1)
     {
            if(DrvGPIO_GetBit(E_GPB, 14)==1) {
          flag1=0;
       count1++;}
     }
     if(count1>2)count1=1;
   if(DrvGPIO_GetBit(E_GPB, 15)==0)
     {delay_ms(30);
     if(DrvGPIO_GetBit(E_GPB, 15)==0)
     flag2=1;
      }
       if(flag2)
     {
      if(DrvGPIO_GetBit(E_GPB, 15)==1) {
          flag2=0;
       count2++;}
           }
   if(count2>2)count2=1;   
     switch(count1)
    {  case 1:DrvGPIO_ClrBit(E_GPA,2);break;
   case 2: DrvGPIO_ClrBit(E_GPA,3) ;  break;
   default:break;
}
        switch(count2)
     {
    case 1: DrvGPIO_ClrBit(E_GPA,4);break;
    case 2: DrvGPIO_ClrBit(E_GPA,5);break;
     default :break ;
       }
    }
    }

void GPIO_Configuration()
{
   DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT ); //led端口设置为输出
   DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT );
   DrvGPIO_Open( E_GPA, 4, E_IO_OUTPUT );
   DrvGPIO_Open( E_GPA, 5, E_IO_OUTPUT );
   
   DrvGPIO_Open( E_GPB, 14, E_IO_INPUT ); //按键端口设置为输入
   DrvGPIO_Open( E_GPB, 15, E_IO_INPUT );
}

void RCC_Configuration(void)
{
   UNLOCKREG();                    // 对写保护位操作时 需要一次向0x50000 0100写入 0x59,0x16,0x88,
   DrvSYS_SetOscCtrl(E_SYS_XTL12M, 1);//与其 SYSCLK->PWRCON.XTL12M_EN = 1; 等同
                                      // PWRCON寄存器(这些寄存器在上电复位到用户解锁定之前是锁定的)除了 BIT[6]位其他位都受写保护
                                   // 解除这些需要向 0x50000 0100写入 0x59,0x16,0x88,
              // 令PWRCON寄存器的BITP[0]为1(即设定12M外部晶振)
   delay_ms(100);                     //while (DrvSYS_GetChipClockSourceStatus(E_SYS_XTL12M) != 1);//等待外部12MHZ晶振就绪
   LOCKREG();                    // 向“0x5000_0100”写入任何值,就可以重锁保护寄存器

GPIO-KEY.zip

1012.95 KB

相关帖子

沙发
hotpower| | 2011-10-8 19:02 | 只看该作者
最好把主要代码贴出来,让大家看看如何笨~~~

使用特权

评论回复
板凳
lixiaoxu2meng| | 2011-10-9 10:54 | 只看该作者
本帖最后由 lixiaoxu2meng 于 2011-10-9 11:08 编辑

顶 我还有一篇帖 专门按键的(菜鸟学习M0第九帖——Button)楼主有时间可以看看

使用特权

评论回复
地板
yanding708811| | 2011-10-9 13:15 | 只看该作者
对新手很有帮助,多谢!

使用特权

评论回复
5
yanding708811| | 2011-10-9 13:16 | 只看该作者
附件怎么不能下载啊/

使用特权

评论回复
6
qq124469142|  楼主 | 2011-10-9 13:58 | 只看该作者
我试了一下。可以下载的啊!!

使用特权

评论回复
7
adampan| | 2011-10-11 08:33 | 只看该作者
乍一看,,前面像是你自己写的,,最后面那个像是复制来的,,整体的编程习惯还不够规范,,例如
while(1)
{    if(DrvGPIO_GetBit(E_GPB, 14)==0)
       { delay_ms(30);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

65

帖子

1

粉丝