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

盐地网站建设公司企业seo职位

盐地网站建设公司,企业seo职位,网站建设项目设计报告,wordpress开发的网站REVIEW 关于ZYNQ中断#xff1a; ZYNQ PS_GPIO中断-CSDN博客 ZYNQ AXI_GPIO_INT-CSDN博客 ZYNQ 定时器中断-CSDN博客 在一些应用场景中#xff0c;可能需要使用到多个定时器#xff0c;除了选择使用 PS 侧其他定时器外#xff0c;也可以使用 PL 侧逻辑定时器。 1. 今日摸鱼…REVIEW 关于ZYNQ中断 ZYNQ PS_GPIO中断-CSDN博客 ZYNQ AXI_GPIO_INT-CSDN博客 ZYNQ 定时器中断-CSDN博客 在一些应用场景中可能需要使用到多个定时器除了选择使用 PS 侧其他定时器外也可以使用 PL 侧逻辑定时器。 1. 今日摸鱼任务 创建并使用AXI_TIMER 定时器11s MIO7(PS_LED)闪烁 定时器20.5s EMIO54(PL_LED)闪烁 小梅哥教材 03_【裸机教程】基于C编程的Zynq裸机程序设计与应用教程v2.4.5.pdf 第七章 基于AXI Timer的定时器中断实验没用串口 2. AXI_Timer 核 AXI Timer IP 核全称为 AXI Timer/Counter 是一个 32/64 位定时器模块可连接到 AXI4-Lite 接口。通过计数值以及接入 axi_timer 的计数时钟周期可以在 PS 内取得比较精确的计时。 单个32位级联64位 结构框图如下图 AXI4-Lite Interface AXI4 Lite 接口模块实现 AXI4 Lite 从接口用于访问内存映射定时器寄存器。 Timer Register 为每个定时器 / 计数器实现一组 32 位寄存器。                            这组寄存器包含加载寄存器、定时器/计数器寄存器和控制/状态寄存器。 32-bit Counter 定时器 / 计数器模块有两个 32 位计数器。                           每个计数器可配置为递增/递减计数并可使用加载寄存器中的值加载。 Interrupt Counter 中断控制模块根据工作模式生成单个中断。 Pulse Width Modulation (PWM) PWM 模块生成具有指定频率和占空比的脉冲信号 PWM0 。                                                       使用定时器 0 用于 PWM0 周期定时器 1 用于PWM0 输出宽度。 3. AXI_Timer 寄存器 3.1 寄存器一览 3.2 控制/状态寄存器 0 (TCSR0) 31-12             保留 11 CASC       使能定时器的级联模式 1启用级联模式做低32位。 10 ENALL     使能所有定时器                                  1 写入该位将设置 ENALL、ENT0(TCSR0)和 ENT1(TCSR1)。                                 0 写入此寄存器将清除 ENALL但对 ENT0 和 ENT1 没有影响。 9 PWMA0      使能定时器 0 的脉宽调制                                   PWM 模式MDT0(TCSR0)和 MDT1(TCSR1)必须为 0。 8 T0INT         定时器 0 中断                                 捕获模式且定时器已使能则此位表示已发生捕获。                                 生成模式则该位表示计数器已翻转。必须通过写入1来清除。 7 ENT0          使能定时器 0                                  0禁用定时器计数器停止                                 1使能定时器计数器运行 6 ENIT0         使能定时器 0 的中断                                 使能此定时器中断信号的断言。对 TCSR0 中的中断标志 T0INT没有影响。                                 0禁用中断信号                                 1使能中断信号 5 LOAD0       加载定时器 0                                  1使用 TLR0 中的值加载计时器                                  与 ENT0 位一起清除 4 ARHT0      自动重新加载/保持定时器 0                                  生成模式时该位确定计数器是重新加载生成值并继续运行还是保持在终止值。                                  在捕获模式下该位确定新的捕获触发器覆盖或保留先前捕获的值。                                  0保持计数器或捕获值。在提供外部捕获之前必须读取TLR0。                                  1重新加载生成值或覆盖捕获值。 3 CAPT0      使能外部捕获触发器定时器  2 GENT0      使能外部生成信号定时器 0   1 UDT0         递增/递减计数定时器                                   0递增                                   1递减 0 MDT0         定时器 0 模式                                   0生成模式                                   1捕获模式 3.3 加载寄存器TLR0 和 TLR1 32b Timer/Counter Load Register 计数器宽度配置为小于 32 位时加载寄存器值在 TLR0 和 TLR1 中右对齐。 最低有效计数器位始终映射到加载寄存器的 bit0 。 级联模式下 TLR0 具有生成值的最低有效 32 位而 TLR1 在生成模式下应具有生成值的最高有效位。 3.4 定时器/计数器寄存器TCR0 和 TCR132b Timer/Counter Register 计数器宽度配置为小于 32 位时计数值在 TCR0 和 TCR1 中右对齐。 在级联模式下 TCR0 具有 64 位计数器中最低有效位的 32 位 TCR1 具有最高有效位。 3.5 控制/状态寄存器 1TCSR1 与TCSR0相比减少了第11位 其他功能与其对应 4. 工作模式 3.1 生成模式         在生成模式下会将加载寄存器(Load Register)中的值加载到计数器中。当计数器使能时根据定时器控制状态寄存器TCSR 中向上 / 向下UDT位递增/减计数。在计数器进位转换时计数器停止或重新加载生成值并在达到超时值后按照 TCSR 中自动重新加载 /保持 ARHT位的选择继续计数。定时器中断状态TINT 如果使能则 GenerateOut 信号在一个时钟周期内被驱动为 1 。         如果使能当达到超时值时定时器的中断信号被驱动为1。通过向定时器中断寄存器写入 1 来清除中断。使用此模式生成具有指定间隔的重复中断或外部信号。 3.2 捕获模式         在捕获模式下当外部捕获信号时计数器的值存储在加载寄存器中。检测到捕获事件时也会在 TCSR 中设置 TINT 位。根据 TCSR 中 UDT 位的选 择计数器可配置为该模式的递增或递减计数器。自动重新加载 / 保持ARHT位控制在清除前一个 TINT标志之前是否用新的捕捉值覆盖捕捉值。使用此模 式对外部事件进行时间标记同时生成中断。 3.3 脉宽调制模式         在脉宽调制PWM 模式下两个定时器 /计数器成对使用以产生具有指定频率和占空因数的输出信号 PWM0 。定时器 0 设置周期定时器 1 设置PWM0 输出的高电平时间。 3.4 级联模式         在级联模式下两个定时器/ 计数器级联为单个 64 定时器 /计数器。级联计数器可以在生成和捕获模式下工作。 TCSR0 用作级联计数器的控制和状态寄存器。在此模式下 TCSR1 被忽略。         当需超过 32 位宽的定时器 /计数器时使用此模式。级联操作需要将定时器 0 和定时器 1 成对使用。定时器 1 的计数事件是定时器 0 从全 1 翻转到全 0反之亦然。 5. Block Design AXI_TIMER保持默认设置 6. SDK PS_GPIO、 SCU_GICZYNQ PS_GPIO中断-CSDN博客AXI_TIMER.h #ifndef AXI_Timer_AXI_Timer_H_ #define AXI_Timer_AXI_Timer_H_ #include xscutimer.h #include xtmrctr.h #define TMRCTR_DEVICE_ID    XPAR_TMRCTR_0_DEVICE_ID #define TMRCTR_INTERRUPT_ID    XPAR_FABRIC_TMRCTR_0_VEC_ID #define INTC_DEVICE_ID        XPAR_SCUGIC_SINGLE_DEVICE_ID #define TIMER_CNTR_0         0 #define TIMER_CNTR_1         1#define TIMER0_FREQ            XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ    //(50000000U)#define RELOAD_VAL_US(n)    ((TIMER0_FREQ/1000000)*n-1)        //计算n(us)的装载值 #define RELOAD_VAL_MS(n)    ((TIMER0_FREQ/1000)*n-1)        //计算n(ms)的装载值 #define RELOAD_VAL_S(n)        ((TIMER0_FREQ)*n-1)                //计算n(s)的装载值 //这里计算值需选择  XTC_DOWN_COUNT_OPTION        配置为向下计数默认为向上计数 extern XTmrCtr AXI_Timer0;        //定时器实例extern volatile uint16_t Cnt0;extern volatile uint16_t Cnt1;extern volatile uint16_t Cnt0_Flag;extern volatile uint16_t Cnt1_Flag; void AXI_Timer_Init(XTmrCtr *TmrCtrInstPtr,uint16_t DevId); void AXI_Timer_Int_Init(XTmrCtr *TmrCtrInstPtr,uint16_t IntrId,XTmrCtr_Handler Timer_Handler); void AXI_Timer_SetOption(XTmrCtr *TmrCtrInstPtr,uint8_t TmrCtrNum,uint32_t Mode, uint32_t Reload_Val); void AXI_Timer0_IRQ_Handler(void *CallBackRef, u8 TmrCtrNum); #endif /* AXI_Timer_AXI_Timer_H_ */   AXI_TIMER.c /**   *****************************************************************************   *                     AXI TIMER IP核的定时器中断相关应用库   *****************************************************************************   *   * File   : AXI_Timer.c   * By     : Sun   * Version: V1.0   * Date   : 2022 / 05 / 19   * Shop    : https://xiaomeige.taobao.com/   *   ***************************************************************************** **/ #include AXI_TIMER.h #includeSCU_GIC.h XTmrCtr AXI_Timer0;        //定时器实例 /**   *****************************************************   * brief    初始化AXI_Timer设备   * param    TmrCtrInstPtr    Timer对象指针   * param    DevId            Timer设备ID   * usage    //定时器初始化   *         AXI_Timer_Init(Timer0,TMRCTR_DEVICE_ID);   ***************************************************** **/ void AXI_Timer_Init(XTmrCtr *TmrCtrInstPtr,uint16_t DevId) {     XTmrCtr_Initialize(TmrCtrInstPtr, DevId); } /**   *****************************************************   * brief    初始化AXI_Timer中断   * param    TmrCtrInstPtr    Timer对象指针   * param    IntrId            中断ID   * param    Timer_Handler    Timer的中断服务函数   * usage    //定时器中断初始化,中断服务函数为AXI_Timer0_Handler   *         AXI_Timer_Int_Init(Timer0,TMRCTR_INTERRUPT_ID,AXI_Timer0_Handler);   ***************************************************** **/ void AXI_Timer_Int_Init(XTmrCtr *TmrCtrInstPtr,uint16_t IntrId,XTmrCtr_Handler Timer_Handler) {     Set_ScuGic_Link(IntrId, 0xA8, HIGH_Level_Sensitive, XTmrCtr_InterruptHandler, TmrCtrInstPtr);     XTmrCtr_SetHandler(TmrCtrInstPtr, Timer_Handler,TmrCtrInstPtr); } /**   *****************************************************   * brief    设置AXI_Timer配置   * param    TmrCtrInstPtr    Timer对象指针   * param    TmrCtrNum        AXI_Timer计数器0为计数器01为计数器1   * param    Mode            Timer模式配置   * 模式有以下几种    XTC_CASCADE_MODE_OPTION        启用级联模式仅适用于TCSRO   *                    XTC_ENABLE_ALL_OPTION        一次性启用所有定时计数器   *                 XTC_DOWN_COUNT_OPTION        配置为向下计数默认为向上计数   *                 XTC_CAPTURE_MODE_OPTION        配置为输入捕获模式默认为比较模式   *                 XTC_INT_MODE_OPTION            开定时器中断向下计数到0或向上计数溢出时触发   *                 XTC_AUTO_RELOAD_OPTION        开启自动重装载   *                 XTC_EXT_COMPARE_OPTION        启用外部比较输出信号   * param    Reload_Val        装载值每个CLK它会向上或下计数1这里的CLK由AXI_TIMER IP核外部供给   * usage    //定时器计数器0配置为中断模式自动重装载且向下计数   *         AXI_Timer_SetOption(Timer0,TIMER_CNTR_0, XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION,RELOAD_VALUE);   ***************************************************** **/ void AXI_Timer_SetOption(XTmrCtr *TmrCtrInstPtr,uint8_t TmrCtrNum,uint32_t Mode,uint32_t Reload_Val) {     XTmrCtr_SetOptions(TmrCtrInstPtr, TmrCtrNum, Mode);     //设置重装载值这个值在计数器启动时被载入     XTmrCtr_SetResetValue(TmrCtrInstPtr, TmrCtrNum, Reload_Val);     //启动计数器     XTmrCtr_Start(TmrCtrInstPtr, TmrCtrNum); } void AXI_Timer0_IRQ_Handler(void *CallBackRef, u8 TmrCtrNum) {         //Timer0 的计数器 0 中断         if (TmrCtrNum TIMER_CNTR_0)         {             /* ↓↓↓用户处理↓↓↓ */             Cnt0_Flag 1;            Cnt0;             /* ↑↑↑结束处理↑↑↑ */         }         //Timer0 的计数器 1 中断         if(TmrCtrNum TIMER_CNTR_1)         {             /* ↓↓↓用户处理↓↓↓ */             Cnt1_Flag 1;            Cnt1;             /* ↑↑↑结束处理↑↑↑ */         } }   main.c //系统头文件 #include stdio.h #include stdint.h //Xilinx头文件 #include xgpiops.h #include xparameters.h #include AXI_TIMER.h #include PS_GPIO.h #include SCU_GIC.h volatile uint16_t Cnt0 0;volatile uint16_t Cnt1 0;volatile uint16_t Cnt0_Flag 0;volatile uint16_t Cnt1_Flag 0; #define INPUT  1 #define OUTPUT 0 #define PL_LED (540) #define PS_LED 7 int main(void) {     //初始化通用中断控制器         ScuGic_Init();     //定时器初始化         AXI_Timer_Init(AXI_Timer0,XPAR_TMRCTR_0_DEVICE_ID);     //定时器中断初始化         AXI_Timer_Int_Init(AXI_Timer0,TMRCTR_INTERRUPT_ID,AXI_Timer0_IRQ_Handler);     //定时器计数器 0 配置为中断模式自动重装载且向下计数定时 1s         AXI_Timer_SetOption(AXI_Timer0,TIMER_CNTR_0, XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION,RELOAD_VAL_S(1));     //定时器计数器 1 配置为中断模式自动重装载且向下计数定时 0.5s         AXI_Timer_SetOption(AXI_Timer0,TIMER_CNTR_1, XTC_INT_MODE_OPTION | XTC_AUTO_RELOAD_OPTION | XTC_DOWN_COUNT_OPTION,RELOAD_VAL_MS(500));     //初始化 PS 端 GPIO         PS_GPIO_Init();     //设置 PS_LED(MIO7)方向为输出         PS_GPIO_SetMode(PS_LED, OUTPUT, 0);     //设置 PL_LED(T14)方向为输出         PS_GPIO_SetMode(PL_LED, OUTPUT, 0);     while(1)     {         //判断计数器 0 的计数标志         if(Cnt0_Flag)         {             PS_GPIO_SetPort(PS_LED, (Cnt0%20)?1:0);             Cnt0_Flag 0; //清除标志         }         //判断计数器 1 的计数标志         if(Cnt1_Flag)         {             PS_GPIO_SetPort(PL_LED, (Cnt1%20)?1:0);             Cnt1_Flag 0; //清除标志         }     }     return 0; } 每次检测到定时标志LED翻转 摸鱼结束~
http://www.hkea.cn/news/14514408/

相关文章:

  • 企业做网站报价自己学做网站需要学多久
  • 做暧免费观看网站基于vue的毕业设计题目
  • 公司建网站一般多少钱chinacd wordpress99
  • 杭州城乡建设厅网站赣州建设局 网站
  • 杭州手机网站制作公司wordpress模版位置
  • 网站后台 js框架wordpress支持多少数据
  • 德阳市网站建设外网浏览网站
  • 做淘宝客需要网站吗wordpress企业营销主题
  • 蒙古网站群建设html设计软件
  • 网站建设做账智加设计
  • 网站规划设计的一般流程定制企业app开发
  • 网站建设必须安装程序广东微信网站制作公司
  • 网站开发 接单东莞seo建站公司
  • 做个普通的网站在上海做要多少钱做网站的网站
  • 如何做网站清风制作施工企业安全生产管理制度主要有
  • 网站迁移 域名设置厦门市建设局查询保障摇号网站首页
  • 广州协安建设工程有限公司网站如何制作微信小程序教程
  • 做网站公司不给源码wordpress会计模板下载
  • 广州网站推广运营竞价 推广
  • 网站的建站过程虚拟主机网站模板
  • 把别人的图片拿来做网站小程序商城多少钱
  • 宁夏网站建设费用网站开启gzip压缩
  • 有域名一定要买空间做网站园艺建设网站
  • 个人网站制作流程如何删除wordpress文件夹
  • 网站建设的公司哪家便宜黄山网络推广哪家好
  • 网站颜色字体颜色淘宝上可以做网站吗
  • 做百度推广网站多少钱抚顺市城市建设档案馆网站
  • 2014做社交网站中国最大的建站平台
  • 视频网站 建设个人性质的网站备案容易查
  • 酷炫flash网站用友erp管理系统多少钱