SoC 外设-自定义 ip 实验 PWM实现呼吸灯

DS-5 中eclipse更新第二种代码为:

/** main.c**  Created on: 2021年12月9日*      Author: awcloud*///gcc标准头文件
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>//HPS厂家提供的底层定义头文件
#define soc_cv_av //开发平台Cyclone V 系列#include "hwlib.h"
#include "socal/socal.h"
#include "socal/hps.h"//与用户具体的HPS 应用系统相关的硬件描述头文件
#include "hps_0.h"#define HW_REGS_BASE (ALT_STM_OFST)     //HPS外设地址段基地址
#define HW_REGS_SPAN (0x04000000)       //HPS外设地址段地址空间 64MB大小
#define HW_REGS_MASK (HW_REGS_SPAN - 1) //HPS外设地址段地址掩码static volatile unsigned long *pwm_virtual_base=NULL;
int fpga_init(void *virtual_base)
{int fd;//1.打开mmuif((fd = open("/dev/mem",(O_RDWR | O_SYNC))) == -1){printf("ERROR:open failed \"/dev/mem\"...")   ;return 1;}//将外设空间映射到用户空间  mmap()virtual_base = mmap(NULL,HW_REGS_SPAN, ( PROT_READ | PROT_WRITE ), MAP_SHARED,fd,HW_REGS_BASE);//外设地址 = 虚拟地址 + 外设设的偏移地址(mm_bridge + 桥上的偏移地址)pwm_virtual_base = virtual_base +((unsigned long)(ALT_LWFPGASLVS_OFST + MY_PWM_0_BASE) & (unsigned long)(HW_REGS_MASK));return fd;
}int main()
{int fd,i;void *virtual_base=NULL;fd = fpga_init(virtual_base);*(pwm_virtual_base+2) =0x01;   //使能信号*(pwm_virtual_base+0) = 0xffff;//输入预重装值int tmp=-65536;//操作外设while(1){tmp = tmp + 10;if(tmp>65536){tmp = -65536;}else if(tmp > 0){*(pwm_virtual_base+1) = tmp  ; //亮到灭的过程}else{*(pwm_virtual_base+1) = -tmp;  //灭到亮的过程}usleep(200);}//取消地址映射if(munmap(virtual_base,HW_REGS_SPAN) == -1){printf("ERROR:munmap() failed...\n");close(fd);return 1;}//关闭 mmuclose(fd);return 0;
}

实验流程链接:

https://pan.baidu.com/s/1ukN9QYPqNp10BJlALUwljw
提取码:3333

SoC 外设-自定义 ip 实验 PWM实现呼吸灯相关推荐

  1. 第六期 自定义IP添加-PWM 基于ARTY A7的MicroBlaze系统搭建与应用

    第六期 自定义IP添加-PWM 基于ARTY A7的MicroBlaze系统搭建与应用 说明 演示:在软核中添加自定义的ip bd文件的编辑 vitis文件 说明 直接在cpu中添加p产生pwm的IP ...

  2. 【STM32】HAL库 STM32CubeMX教程七---PWM输出(呼吸灯)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  3. 嵌入式系统开发13——STM32输出PWM实现呼吸灯

    本文主要介绍在STM32F103C8T6上,利用定时器输出PWM波形,进而驱动LED实现呼吸灯. 目录 一.任务要求 二.PWM简介 1.什么是PWM 2.相关概念 3.PWM的产生 4.PWM的通道 ...

  4. 【mcuclub】PWM(呼吸灯、调节灯亮度)

    一.简介 PWM,脉冲宽度调制,是英文"Pulse Width Modulation"的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应 ...

  5. 【STM32F4教程】第六节:通用定时器之PWM实现呼吸灯

    Conceit is the quicksand of success. 自负是成功的流沙. PWM实现呼吸灯 PWM概述 相关概念 PWM设置流程 呼吸灯实现例程 pwm.c main.c PWM概 ...

  6. STM32学习日记3---定时器TIM3重映射PWM波呼吸灯实验

    文章目录 1. 代码 关于PWM波的输出,我们需要用到定时器的4个通道(通用定时器和高级定时器有,基本定时器没有这4个通道)里面的PWM生成.然后查看数据手册,了解定时器的重映射引脚情况.所以配置时, ...

  7. zynq 7000 自定义IP 实验

    本文通过一个简单例子介绍zynq 7000中自定义ip 的设计过程. 此例子就是控制4个led . 在ps-pl 试验中,一般用的就是Vivado 自带的GPIO ip. 所以如果你熟悉了PS端和PL ...

  8. 【RED-V】驱动 PWM 实现呼吸灯

    打开 FreedomStudio 软件,依次在菜单栏中选择[File]->[New]->[Freedom E SDK Software Project]新建工程. 在 Select Tar ...

  9. 【CC2530授课笔记】⑧ PWM实现呼吸灯,RGB三色灯,蜂鸣器播放音乐

    摘要 这篇文章通过定时器产生PWM波,控制LED实现呼吸灯的效果,并且通过三路PWM分别控制RGB三色灯,实现了颜色渐变.最后通过调制PWM频率,使用蜂鸣器实现了音乐播放. PWM简介 Pulse W ...

最新文章

  1. 新松机器人BG总裁高峰_新松与民航物流公司签署战略合作协议
  2. 链表游戏:CVE-2017-10661之完全利用
  3. 图解Hadoop hdfs写数据流程
  4. HDU 4787 GRE Words Revenge
  5. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...
  6. 论文浅尝 - ICLR 2020 | 用于文本推理的神经模块网络
  7. python将图片存入数据库_使用python把图片存入数据库
  8. Scala中class、object、case class、case object区别
  9. 利用numpy.gradient计算图像梯度
  10. 从我国第一例计算机病毒是小球病毒,传入我国的第一例计算机病毒是
  11. 一名高校老师的观点:高考志愿该怎么填
  12. 怎么手动修改域名服务器地址,如何修改域名dns服务器地址
  13. windows和linux共用蓝牙鼠标,Ubuntu和Windows双系统蓝牙设备共享配对
  14. android通讯录开发二 数据表各字段含义
  15. 分布式 | 如何通过 dble 的 split 功能,快速地将数据导入到 dble 中
  16. Mac下将文件复制到移动硬盘
  17. Federico Ferrari 和Ole Sigmund的高效3D拓扑优化程序
  18. 一种快速生成边界交通场景数据的新方法
  19. 本科入职微软,是一种怎样的体验?让我们来听听这位学长的经历分享吧!
  20. 9.28上海交大PMP每日一题

热门文章

  1. android 头像选择,裁剪全套解决方案,你值得拥有!
  2. Java中的常用开发工具详解
  3. android键盘工具栏,android-如何禁用在软键盘上显示“建议”
  4. DeepID+DeepID2+DeepID3人脸识别算法总结
  5. linux 平台camera得到YUV数据转RGB888及加BMP头文件
  6. 如何检查 JavaScript 中的“未定义”? [复制]
  7. 蓝牙耳机续航时间一般是多久?续航能力强的蓝牙耳机
  8. Sat格式文件详解翻译
  9. ios信号从4g变成无服务器,iOS12.1.2信号差无法上网怎么办?4G断流解决方法
  10. 深度剖析SGI STL二级空间配置器内存池源码