ZYNQ-呼吸灯实验

4 篇文章 1 订阅
#include "xparameters.h"
#include "xil_printf.h"
#include "breath_led_ip.h"
#include "xil_io.h"
#include "sleep.h"

#define  LED_IP_BASEADDR   XPAR_BREATH_LED_IP_0_S0_AXI_BASEADDR  //LED IP基地址
#define  LED_IP_REG0       BREATH_LED_IP_S0_AXI_SLV_REG0_OFFSET  //LED IP寄存器地址0
#define  LED_IP_REG1       BREATH_LED_IP_S0_AXI_SLV_REG1_OFFSET  //LED IP寄存器地址1

//main函数
int main()
{
	 int freq_flag;      //定义频率状态,用于循环改变呼吸灯的呼吸频率
	 int led_state;      //定义LED灯的状态

	 xil_printf("LED User IP Test!\r\n");
	 while(1)
	 {
		 //根据freq_flag的标志位,切换呼吸灯的频率
		 if(freq_flag == 0)
		 {
			 BREATH_LED_IP_mWriteReg(LED_IP_BASEADDR,LED_IP_REG1,0x800000ef);
			 freq_flag = 1;
		 }
		 else
		 {
			 BREATH_LED_IP_mWriteReg(LED_IP_BASEADDR,LED_IP_REG1,0x8000002f);
			 freq_flag = 0;
		 }
		 //获取LED当前开关状态   1:打开  0:关闭
		 led_state = BREATH_LED_IP_mReadReg(LED_IP_BASEADDR,LED_IP_REG0);
		 //如果开关关闭,打开呼吸灯
		 if(led_state == 0)
		 {
			 BREATH_LED_IP_mWriteReg (LED_IP_BASEADDR, LED_IP_REG0, 1);
			 xil_printf("Breath LED ON\r\n");
		 }
		 sleep(5);
		 //获取LED当前开关状态   1:打开  0:关闭
		 led_state = BREATH_LED_IP_mReadReg(LED_IP_BASEADDR,LED_IP_REG0);
		 //如果开关打开,关闭呼吸灯
		 if(led_state == 1)
		 {
			 BREATH_LED_IP_mWriteReg (LED_IP_BASEADDR, LED_IP_REG0, 0);
			 xil_printf("Breath LED OFF\r\n");
		 }
		 sleep(1);
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值