用混合编程实现两个LED交替闪烁

举报
肥学 发表于 2022/04/12 23:14:35 2022/04/12
【摘要】 目录标题 要求C语言部分汇编部分资料部分 要求 LED是程序开发中最常用的状态指示设备。开发板上有两个用户可编程LED,他们直接与CPU的GPIO连接,低电平有效(点亮),通过对G口...

要求

LED是程序开发中最常用的状态指示设备。开发板上有两个用户可编程LED,他们直接与CPU的GPIO连接,低电平有效(点亮),通过对G口的操作控制CPU板左下角的LED1和LED2实现轮流闪烁。详细的资源用如下表。

LED1
GPIOLIG口的第8位指示
LED2
GPIOIIG口的第9位指示

C语言部分

#define rGPGCON (*(volatile unsigned *)0x56000060)
#define rGPGDAT (*(volatile unsigned *)0x56000064)
#define rGPGUP  (*volatile unsigned *)0x56000068)


void Led_port_init(void);

#define LED1_ON   ~(1<<8)
#define LED2_ON   ~(1<<9)


#define LED1_OFF   (1<<8)
#define LED2_OFF   (1<<9)
/*************************************************
Function name: delay
Parameter    : times
Description	 : 延时函数
Return		 : void
Argument     : void
Autor & date :
**************************************************/
void delay(int times)
{
    int i;
    for(;times>0;times--)
      for(i=0;i<400;i++);
}
/*************************************************
Function name: Main
Parameter    : void
Description	 : 主功能函数
Return		 : void
Argument     : void
Autor & date :
**************************************************/
int Main()
{	
    Led_port_init();
    
    while(1)
    {
    	/* 1亮2灭 */
    	rGPGDAT = rGPGDAT&(LED1_ON)|(LED2_OFF);
    
    	delay(10000);
    
    	/* 1灭2亮 */
    	rGPGDAT = rGPGDAT|(LED1_OFF)&(LED2_ON);
    	
    	delay(10000);
    }
}	

/*************************************************
Function name: Led_port_init
Parameter    : void
Description	 : mini2440开发板有4个引脚连接了LED发光
               二极管,分别是GPB5--LED1,GPB6—LED2
               GPB7--LED3,GPB8--LED4,该函数的作用
               是对其个引脚进行初始化。
Return		 : void
Argument     : void
Autor & date : Daniel
**************************************************/   
void Led_port_init(void)
{
   /*设置GPG8-GPG9为输出端口*/
   rGPGCON &= ~((3<<16)|(3<<18));
   /*     
     11 0000 0000 0000 0000
   1100 0000 0000 0000 0000
   1111 0000 0000 0000 0000
   0000 1111 1111 1111 1111
   */
   
   rGPGCON |= (1<<16)|(1<<18);
   
   /* 	    
      1 0000 0000 0000 0000
    100 0000 0000 0000 0000
   0101 0000 0000 0000 0000
   */
   
}

汇编部分


		AREA Init,CODE,READONLY;
		ENTRY;
		EXPORT _ENTRY          ;
_ENTRY
ResetEntry
		MOV sp,#0x0c700000     ;
		import Main            ;
		BL     Main			   ;
		
		end

资料部分

gpio的gpg端口
在这里插入图片描述

文章来源: blog.csdn.net,作者:肥学,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jiahuiandxuehui/article/details/124115014

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。