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

TTC定时器中断——MPSOC实战3

开启TTC定时器,不同于7000系列的私有定时器

此处设置LPD_LSBUS频率

TTC频率取决于LPD_LSBUS

可前往指定位置查看参数

不使能填写对应宏

可前往指定位置查看参数

main.c

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"
#include "main.h"
#include "gpio.h"
#include "Ttc.h"
#include "intr.h"//定义变量
XGpioPs 	Gpio;			//GPIO	驱动实例
XScuGic 	Intc;			//GIC	驱动实例
XTtcPs 		TTC;			//定时器 驱动实例int main(){xil_printf("MIO_TTC_INT\r\n");mio_config(&Gpio);TTC_config(&TTC);TTC_intr_config(&Intc,&TTC);XTtcPs_Start(&TTC);while(1){}return 0;
}

main.h

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"#define GPIO_DEVICE_ID		XPAR_XGPIOPS_0_DEVICE_ID		//MIO器件ID
#define MIO_LED0			0
#define MIO_LED1			7
#define MIO_LED2			8
#define MIO_KEY0			12
#define MIO_KEY1			11
#define TTC_DEVICE_ID		XPAR_XTTCPS_0_DEVICE_ID			//TTC定时器器件ID
#define TTC_INTR_ID			XPAR_XTTCPS_0_INTR				//TTC定时器中断ID
#define INTC_DEVICE_ID		XPAR_SCUGIC_SINGLE_DEVICE_ID	//中断控制器器件ID#define TIMER_LOAD_VALUE	20000000 - 1				    //TTC定时器装载值     100Mhz->0.2ms = 20_000_000

gpio.c

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "gpio.h"
#include "main.h"void mio_config(XGpioPs *gpio_ptr){////////////配置GPIO输入输出////////////XGpioPs_Config *ConfigPtr;//根据器件ID查找GPIO配置信息ConfigPtr = XGpioPs_LookupConfig(GPIO_DEVICE_ID);//对GPIO驱动初始化XGpioPs_CfgInitialize(gpio_ptr, ConfigPtr,ConfigPtr->BaseAddr);//设置引脚方向 	0:输入 	1输出XGpioPs_SetDirectionPin(gpio_ptr, MIO_LED0, 1);XGpioPs_SetDirectionPin(gpio_ptr, MIO_LED1, 1);//设置输出使能	0: 不使能	1: 使能XGpioPs_SetOutputEnablePin(gpio_ptr, MIO_LED0, 1);XGpioPs_SetOutputEnablePin(gpio_ptr, MIO_LED1, 1);//设置初始状态XGpioPs_WritePin(gpio_ptr, MIO_LED0, 0x0);XGpioPs_WritePin(gpio_ptr, MIO_LED1, 0x0);
}

gpio.h

         

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "main.h"extern XGpioPs 	Gpio;			//GPIO	驱动实例#define led0(a)	XGpioPs_WritePin(&Gpio,MIO_LED0,a);void mio_config(XGpioPs *gpio_ptr);

intr.c

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"
#include "main.h"
#include "intr.h"
#include "xttcps_hw.h"u8 led_state	;void TTC_intr_config(XScuGic *intr_ptr,XTtcPs *TTC_ptr){//GIC配置信息驱动实例XScuGic_Config *IntcConfig;//根据中断控制器的器件ID查找配置信息IntcConfig = XScuGic_LookupConfig(INTC_DEVICE_ID);//根据查找到的配置信息初始化中断控制器XScuGic_CfgInitialize(intr_ptr, IntcConfig,IntcConfig->CpuBaseAddress);//关联GPIO中断处理程序XScuGic_Connect(intr_ptr, TTC_INTR_ID,(Xil_ExceptionHandler)IntrHandler,(void *)TTC_ptr);//使能GIC的GPIO中断XScuGic_Enable(intr_ptr, TTC_INTR_ID);//使能TTC定时器中断XTtcPs_EnableInterrupts(TTC_ptr,XTTCPS_IXR_INTERVAL_MASK);//针对异常初始化Xil_ExceptionInit();//注册中断请求异常处理程序Xil_ExceptionRegisterHandler(XIL_EXCEPTION_ID_INT,(Xil_ExceptionHandler)XScuGic_InterruptHandler,intr_ptr);//使能异常处理Xil_ExceptionEnableMask(XIL_EXCEPTION_IRQ);
}void IntrHandler(void *CallBackRef){XTtcPs *TTC_ptr = (XTtcPs *) CallBackRef;led_state = !led_state;xil_printf("led_state = %d\r\n",led_state);XTtcPs_ClearInterruptStatus(TTC_ptr,XTTCPS_IXR_INTERVAL_MASK);
}

intr.h

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"
#include "main.h"void TTC_intr_config(XScuGic *intr_ptr,XTtcPs *TTC_ptr);
void IntrHandler(void *CallBackRef);

Ttc.c

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"
#include "main.h"
#include "Ttc.h"void TTC_config(XTtcPs *TTC_ptr){XTtcPs_Config *ConfigPtr;//根据器件ID查找GPIO配置信息ConfigPtr = XTtcPs_LookupConfig(TTC_DEVICE_ID);//对定时器驱动初始化XTtcPs_CfgInitialize(TTC_ptr, ConfigPtr,ConfigPtr->BaseAddress);//配置定时器参数//配置工作模式   定时模式XTtcPs_SetOptions(TTC_ptr, XTTCPS_OPTION_INTERVAL_MODE);//预分频   不使能XTtcPs_SetPrescaler(TTC_ptr,XTTCPS_CLK_CNTRL_PS_DISABLE);//设置间隔   定时值XTtcPs_SetInterval(TTC_ptr,TIMER_LOAD_VALUE);//开启定时器   ->配置完中断后//XTtcPs_Start(TTC_ptr);
}

Ttc.h

#include <stdio.h>
#include "xparameters.h"
#include "xgpiops.h"
#include "sleep.h"
#include "xscugic.h"
#include "xil_exception.h"
#include "xil_printf.h"
#include "xttcps.h"
#include "main.h"void TTC_config(XTtcPs *TTC_ptr);


文章转载自:

http://OkuvwiGo.jLrym.cn
http://Oiv7UdyN.jLrym.cn
http://htBPYMf3.jLrym.cn
http://YgWPDpOu.jLrym.cn
http://iD4zRb8C.jLrym.cn
http://rD04bD42.jLrym.cn
http://7tPpyDk7.jLrym.cn
http://CGejBTUe.jLrym.cn
http://kJMPtyJn.jLrym.cn
http://eqzBzs7n.jLrym.cn
http://ZdlX2gCO.jLrym.cn
http://r4gRR332.jLrym.cn
http://25rXF7h7.jLrym.cn
http://GFEzDrJf.jLrym.cn
http://7NPBfRUu.jLrym.cn
http://2n1LSEzL.jLrym.cn
http://odAYiprz.jLrym.cn
http://cxaCMuR3.jLrym.cn
http://QDBW52yM.jLrym.cn
http://gJ37xOX3.jLrym.cn
http://VUOAcTrk.jLrym.cn
http://77wUFBUC.jLrym.cn
http://qomRGHzM.jLrym.cn
http://z6gdmBrT.jLrym.cn
http://bidpr970.jLrym.cn
http://iSA5xT5o.jLrym.cn
http://lTIku3Jz.jLrym.cn
http://R2w02w0H.jLrym.cn
http://fSKtmTro.jLrym.cn
http://BEn4rMrz.jLrym.cn
http://www.dtcms.com/a/384015.html

相关文章:

  • [数据结构——lesson10.2堆排序以及TopK问题]
  • Maven 本地仓库的 settings.xml 文件
  • 绑定数据管理
  • RTU 全面科普:从入门到 AI 时代的智能化演进
  • lxml对于xml文件的操作
  • 第23课:行业解决方案设计
  • 深入理解 Java 内存模型与 volatile 关键字
  • Alibaba Lens:阿里巴巴推出的 AI 图像搜索浏览器扩展,助力B2B采购
  • I.MX6UL:主频和时钟配置实验
  • 【前端知识】package-lock.json 全面解析:作用、原理与最佳实践
  • 计算机视觉(opencv)实战二十——SIFT提取图像特征
  • Android开发-SharedPreferences
  • SpringBoot的自动配置原理及常见注解
  • Java内部类内存泄漏解析:`this$0`引用的隐秘风险
  • 快速掌握Dify+Chrome MCP:打造网页操控AI助手
  • 【cpp Trip第1栈】vector
  • 详解 new 和 delete
  • 基于PassGAN的密码训练系统设计与实现
  • 避开Java日期格式化陷阱:`yyyy`与`YYYY`的正确使用
  • SpringCloud与Dubbo实战对决:从协议到治理的全维度选型指南(一)
  • SAP HANA Scale-out 04:CalculationView优化
  • 删除文件夹里的网盘图标
  • MPC模型预测控制:一种先进的控制策略
  • 【数据集】基于观测的全球月度网格化海表pCO₂与海气CO₂通量产品及其月气候平均值
  • RS485简介
  • Claude Code vs Codex
  • 多语言编码Agent解决方案(5)-IntelliJ插件实现
  • 光纤入户技术:原理、策略与市场博弈
  • DeerFlow实践: 日程管理智能体应用框架设计
  • spring、springboot、springCloud