当前位置: 首页 > news >正文

南京网站建设学习免费网站登陆模板

南京网站建设学习,免费网站登陆模板,怎样做一个app平台,上海网站制作与推广版本#xff1a;Vivado2020.2#xff08;Vitis#xff09; 任务#xff1a;使用定时器 (私有定时器) 中断 实现 LED#xff08;PS端#xff09; 定时1s亮灭翻转 目录 一、介绍 二、硬件设计 三、软件设计 四、效果 一、介绍 Zynq系列是Xilinx(现为AMD)推出的集成了AR…  版本Vivado2020.2Vitis 任务使用定时器 (私有定时器) 中断 实现 LEDPS端 定时1s亮灭翻转 目录 一、介绍 二、硬件设计 三、软件设计 四、效果 一、介绍 Zynq系列是Xilinx(现为AMD)推出的集成了ARM Cortex-A9双核处理器和FPGA的可编程SoC器件。在Zynq中定时器是重要的外设模块用于时间测量、延时控制和周期性中断触发等。 Zynq主要有以下几种定时器 私有定时器(Private Timer) - 每个ARM核都有一个私有定时器 全局定时器(Global Timer) - 双核共享的64位定时器 看门狗定时器(Watchdog Timer、WDT) - 用于系统监控和复位 三重定时器计数器(TTC) - FPGA侧提供的定时器 像 PS 端延时可以用定时器中断方式进行操作以让cpu执行其他重要操作。 二、硬件设计 ZYNQ 的配置使用到了 MIOLED灯、UART用于Debug、DDR存储器跟之前的工程案例相比没有额外的特殊配置下面这幅图是CPU的工作频率保持默认666.666MHz定时器驱动时钟是其二分之一也就是333.333MHz后面会用到 最后整体 bd 设计部分如图所示设计检查、Generate Output Products、 Create HDL Wrapper、管脚约束、Gnerate Bitstream、无PL端设计这两部忽略、Export Hardware不用包含比特流文件、启动Vitis 三、软件设计 可以打开官方提供的私有定时器的示例工程这里可以选定时器中断的示例工程方便在设计时进行对照参考。 #include xparameters.h #include xil_printf.h #include xgpiops.h #include xscutimer.h #include xscugic.h #include xil_exception.h #include sleep.h//自定义宏//#define GPIO_DEVICE_ID XPAR_XGPIOPS_0_DEVICE_ID //宏定义GPIO器件ID #define MIO_LED 7 //宏定义LED管脚PS端LED根据开发板设值这里对应GPIO MIO 7#define INTC_DEVICE_ID XPAR_SCUGIC_SINGLE_DEVICE_ID //宏定义中断控制器GICID #define TIMER_DEVICE_ID XPAR_XSCUTIMER_0_DEVICE_ID //宏定义TIMER器件ID #define TIMER_IRPT_INTR XPAR_SCUTIMER_INTR //宏定义TIMER中断号中断ID#define TIMER_LOAD_VALUE 0x13DE4354 //定时器计数值定时器驱动时钟333.333MHz为CPU时钟默认666.66MHz一半周期约3ns定时1s计数333_333_333 -1 次//实例化//XGpioPs Gpio; //GPIO示例 XScuGic Intc; //中断控制器实例 XScuTimer Timer; //定时器实例//函数、变量声明//static void Gpio_Init(); //GPIO初始化 static void Timer_Intr_Init(); //定时器中断初始化 static void LED_blink(); //LED闪烁测试 static void Timer_IntrHandler(void *CallBackRef); //定时器中断处理函数 static void Setup_Intr_System(XScuGic *intr, XScuTimer *timer, u16 timer_intr_id); //建立中断系统//主函数//int main() {xil_printf(SCU Timer Interrupt Test! \r\n);Gpio_Init(); //GPIO初始化LED_blink(); //LED闪烁测试Timer_Intr_Init(); //定时器中断初始化while(1)return 0; }//定时器中断处理函数// // param CallBackRef 用户自定义回调参数对应TIMER实例指针void Timer_IntrHandler(void *CallBackRef) {static int led_state 0;//将回调参数转为TIMER实例指针用于操作硬件例规范化设计XScuTimer *TimerInstPtr (XScuTimer *) CallBackRef;//打印Debug信息xil_printf(Interrupt Detected! \r\n);//清除定时器中断标志位XScuTimer_ClearInterruptStatus(TimerInstPtr);//翻转LED状态值led_state ~led_state;//写数据到GPIO引脚PS端LEDXGpioPs_WritePin(Gpio, MIO_LED, led_state);}//GPIO初始化// void Gpio_Init() {//定义器件ID指针类型XGpioPs_Config * ConfigPtr;//根据器件ID查找器件配置信息ConfigPtr XGpioPs_LookupConfig(GPIO_DEVICE_ID);//初始化GPIO的驱动XGpioPs_CfgInitialize(Gpio, ConfigPtr,ConfigPtr-BaseAddr);//GPIO方向设置0输入/1输出XGpioPs_SetDirectionPin(Gpio, MIO_LED, 1);//设置输出使能1使能XGpioPs_SetOutputEnablePin(Gpio, MIO_LED, 1); }//定时器中断初始化// void Timer_Intr_Init() {//定义器件ID指针类型XScuTimer_Config *ConfigPtr;//根据器件ID查找器件配置信息ConfigPtr XScuTimer_LookupConfig(TIMER_DEVICE_ID);//初始化定时器的驱动XScuTimer_CfgInitialize(Timer, ConfigPtr,ConfigPtr-BaseAddr);//可选定时器自检int Status XScuTimer_SelfTest(Timer);if (Status ! XST_SUCCESS) { xil_printf(Timer Self Test Error! \r\n); }//建立中断系统调用函数Setup_Intr_System(Intc, Timer, TIMER_IRPT_INTR);//加载计数值计数上限XScuTimer_LoadTimer(Timer, TIMER_LOAD_VALUE);//使能自动加载模式计完自动加载计数值不启用计完一次结束XScuTimer_EnableAutoReload(Timer);//启动定时器XScuTimer_Start(Timer); }//建立中断系统// /* 建立中断系统UART接收到数据时产生中断* param intr 是指向 XScuGic驱动实例的指针* param timer 是指向 XScuTimer驱动实例的指针* param timer_intr_id 是TIMER中断ID*/ void Setup_Intr_System(XScuGic *intr, XScuTimer *timer, u16 timer_intr_id) {//定义中断控制器配置信息指针XScuGic_Config * IntcConfig;//根据中断控制器ID查找GIC配置信息IntcConfig XScuGic_LookupConfig(INTC_DEVICE_ID);//初始化中断控制器驱动XScuGic_CfgInitialize(intr, IntcConfig, IntcConfig-CpuBaseAddress);//设置中断异常处理功能Xil_ExceptionInit();Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler) XScuGic_InterruptHandler,(void *) intr);//使能处理器中断Xil_ExceptionEnable();//关联中断处理函数XScuGic_Connect(intr, timer_intr_id,(Xil_ExceptionHandler) Timer_IntrHandler,(void *) timer);//使能GIC中的定时器中断XScuGic_Enable(intr, timer_intr_id);//使能定时器中断XScuTimer_EnableInterrupt(timer); }//LED闪烁测试// void LED_blink() {for(int i0; i3; i)//闪烁3次{//向GPIO写1 、延时200ms、写0、延时XGpioPs_WritePin(Gpio, MIO_LED, 1); usleep(200000);XGpioPs_WritePin(Gpio, MIO_LED, 0); usleep(200000);} }四、效果 上板后会先打印测试信息然后LED灯快速闪烁3次说明MIO配置无误此后每秒定时器会产生中断并将LED的状态翻转效果为每两秒闪烁一次
http://www.zqtcl.cn/news/13591/

相关文章:

  • 网站建设有哪些内容wordpress文件上传目录修改
  • 青岛网站建设一青岛博采网络免费网站注册永久
  • 上海的设计网站有哪些内容临漳手机网站建设
  • 怎么上传网站典型网站建设实例精讲
  • 为什么都用dw做网站电商培训大概多少学费
  • 国内顶尖网站设计公司信息无障碍 网站建设
  • 邮箱的官方网站注册做量化投资网站
  • 郑州网站推广招聘公司网站备案是什么意思
  • 建设银行人力资源系统网站怎么进wordpress 4.1 搜索框
  • 大型建设网站奇网企业网站管理系统
  • 李沧网站建设谁家好电子商务网页设计总结
  • 如何自建网站 卖东西可以做问答的网站
  • 大连嘉良建设有限公司网站cc在线代理
  • 网站建设与管理是哪个软件凡客家居
  • 肖港网站开发优化网站标题名词解释
  • wordpress 全站ssl平面设计的软件都有什么
  • 青岛万维网站设计国外开源cms
  • 打开这个网站晋江论坛兔区
  • 怎么做网站vip并且收费湖南3合1网站建设
  • lamp 网站建设论文太原网站搭建推广
  • 汕尾营销网站建设wordpress 如何开发
  • 新兴县建设局网站万网定制网站怎么样
  • 代做财务报表分析网站网络营销与直播电商怎么样
  • 在北京做网站制作一个月多少钱做房产抵押网站需要什么手续
  • flash网站特点成品ppt的网站免费直播有哪些
  • 网站单个页面做301高端开发网站系统
  • 电脑做网站中国建设银行网站宁波
  • 外贸公司英文网站怎么做龙岗网络科技有限公司
  • seo做的比较好的网站的几个特征大连网站策划
  • 景区网站的作用php企业网站开发框架