Quarts 示例2

package com.converter.test;


import java.text.SimpleDateFormat;
import java.util.Date;


import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Trigger;
import org.quartz.TriggerKey;


public class SimpleJob implements Job {


@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
TriggerKey key=arg0.getTrigger().getKey();
System.out.println(key+" 执行时间为:"+sf.format(new Date()));
}


}



package com.converter.test;


import static org.quartz.JobBuilder.newJob;


import java.text.SimpleDateFormat;
import java.util.Date;


import org.quartz.DateBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import static org.quartz.TriggerBuilder.newTrigger;


public class QuartsTest_2 {


public static void main(String[] args) throws SchedulerException {
SimpleDateFormat sfd=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Logger log=LoggerFactory.getLogger(QuartsTest_2.class);
//获取调度器
SchedulerFactory sf=new StdSchedulerFactory();
Scheduler scheduler=sf.getScheduler();
//按最靠近的时间执行
Date runTime = DateBuilder.nextGivenMinuteDate(null, 5);
//创建JobDetail实例,指定SimpleJob
JobDetail job=newJob(SimpleJob.class).withIdentity("job1", "gorup1").build();

//创建简单时间触发器
SimpleTrigger simpleTrigger=(SimpleTrigger) newTrigger().withIdentity("simpleTrigger1", "group1").startAt(runTime).build();

//设置调度任务
Date ft=scheduler.scheduleJob(job, simpleTrigger);
// log.info("当前时间为:"+runTime);
System.out.println(job.getKey() + " will run at: " + ft + " and repeat: " + simpleTrigger.getRepeatCount() + " times, every "
            + simpleTrigger.getRepeatInterval() / 1000 + " seconds");
scheduler.start();

}
}

Quartus是一款由Altera(现已被Intel收购)提供的FPGA/CPLD设计软件,主要用于数字电路的设计、仿真和综合。虽然“单片机”通常指微控制器芯片(如51系列、AVR等),但在某些教育场景下,人们会利用FPGA通过硬件描述语言(HDL,例如Verilog或VHDL)模拟类似单片机的功能。 下面是一个简单的基于Quartus的“虚拟单片机”实验示例——**实现一个带按钮控制的LED闪烁功能**: ### 实验目标 使用 Quartus 和 FPGA 开发板,完成一个简单的交互式 LED 控制程序。用户按下按键时,LED灯开始以固定频率闪烁;再次按压该键则停止闪烁并保持当前状态。 #### 硬件环境需求: - 带有多个用户可控输入端口(开关/按钮)以及足够数量输出显示设备(比如8个独立LED指示灯)的目标开发板; - 连接至电脑用于下载配置文件的标准USB电缆或其他指定通信接口线缆; #### 软件设置步骤概述如下: 1. **新建项目** - 打开Quartus II集成开发环境(IDE),选择File -> New Project Wizard 创建一个新的工程向导。 2. **编写RTL模块代码**(以下为verilog版本) : ``` verilog module led_control ( input wire clk, // 主时钟信号源 input wire btn, // 按钮输入作为触发条件之一 output reg[7:0] leds); // 输出到外部物理器件上的八个发光二极管的状态 // 定义变量保存之前一次检测结果以便对比判断是否真的发生了改变事件 reg prev_btn; always @(posedge clk) begin if (!prev_btn && btn == 1'b1 ) begin // 上升沿触发 for (integer i=0;i<8;i=i+1) leds[i] <= ~leds[i]; // 反转每一个LED位值达到闪动效果 end else ; // 若未满足切换规则,则维持原状不变 prev_btn<=btn; // 更新存储的历史信息供下次循环参考比较用 end endmodule ``` 上述代码片段创建了一个基本框架,在其中实现了当监测到来自`btn`的变化时将所有连接的LED取反操作从而形成视觉上的一次快速明暗交替变化过程。 3. **分配引脚(Pin Planner)** :依据实际使用的型号规格文档准确设定好每个涉及元件对应的具体位置编号关联起来。 4. **编译与验证(Simulation & Synthesis)** : 先运行功能性测试确认无误后再进行完整流程直至生成最终bitstream文件准备烧录进真实硅晶圆内部结构当中去执行预期任务指令序列... 以上就是利用quartus平台结合现场可编程门阵列技术重现类似于传统意义上的MCU应用实例的一部分内容讲解说明啦! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘怀帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值