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

关于单片机那些事?

周期

时钟周期:也叫振荡周期,就是单片机外接晶振的倒数,如12Mhz,周期就是1/12us,最小的时间单位。频率越高,速度越快

指令周期:执行一条指令需要的时间,一般由若干个机器周期组成

机器周期:一个指令的基本操作(取指,分析,执指)所需要的时间为机器周期,一般由12个时钟周期组成  机器周期 = 12/晶振频率

总线周期:CPU通过总线对外部进行一次访问需要的时间   一个总线周期一般包含4个时钟周期 

主频(时钟频率):1秒钟,时钟周期的个数为主频 

关于定时器的使用

1、滴答定时器,用于单一定时

rt_tick_t start;
start = rt_tick_get()if(rt_tick_get() - start < 3*1000)
{}
else
{}

2、使用rt_thread_mdelay(),用于多个定时处理

需要创建一个独立的任务,如果需要重新定时,需要删除改线程

rt_thread_t ruigang_output3_thread = RT_NULL; // 用于保存RUIGANG_OUTPUT3线程的句柄
void RUIGANG_OUTPUT3(void *param)
{while(1){if(!pi_in.pi_close && !pi_in.pi_reset && RUIGANG_Flag){contrl_pin(_24V_CNTL3, PIN_HIGH, PenFaTime5Sec);contrl_pin(_24V_CNTL3, PIN_LOW, PenFaTime3Min); contrl_pin(_24V_CNTL3, PIN_HIGH, PenFaTime3Sec);contrl_pin(_24V_CNTL3, PIN_LOW, PenFaTime5Min);rt_pin_write(_24V_CNTL3, PIN_HIGH);rt_thread_mdelay(PenFaTime5Min*60);}else{continue;}rt_thread_mdelay(10);}
}if (ruigang_output3_thread != RT_NULL){rt_thread_delete(ruigang_output3_thread); // 删除当前线程}ruigang_output3_thread = rt_thread_create("RUIGANG_OUTPUT3",RUIGANG_OUTPUT3,RT_NULL,1024,PRIORITY_OUT3,10);if (ruigang_output3_thread != RT_NULL){rt_thread_startup(ruigang_output3_thread); // 启动新线程}

3、软件定时器 1秒定时器  时间到了  会自用调用 回调函数   

用于单一定时

#include <rtthread.h>// 定时器的回调函数
static void timer_callback(void* parameter)
{rt_kprintf("Timer tick\n");
}int main(void)
{// 定义定时器句柄rt_timer_t timer;// 创建软件定时器timer = rt_timer_create("mytimer",    // 定时器名称timer_callback,  // 定时器到期时调用的回调函数RT_NULL,    // 传给回调函数的参数rt_tick_from_millisecond(1000),  // 定时周期,单位为tick。这里使用1秒作为周期。RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); // 定时器标志:周期性和软件定时器// 判断定时器是否创建成功if (timer != RT_NULL){// 启动定时器rt_timer_start(timer);}return 0;
}

http://www.lryc.cn/news/382895.html

相关文章:

  • 第5章 传输层
  • 典型传感器简介及驱动安装
  • linux和Win——显卡驱动、Anaconda及pytorch安装(无需单独安装cuda、cudnn)
  • 机器学习之多模态学习FLAVA(Foundational Language and Vision Alignment)
  • Maven高级-证书校验
  • flutter是app跨平台最优解吗?
  • 算法 Hw9
  • 前端JS必用工具【js-tool-big-box】学习,字符串字母大小写转换的方法使用
  • Zookeeper:分布式系统中的协调者
  • 如何使用代理IP进行数据抓取,PHP爬虫抓取京东商品数据
  • 一口气安装【Python】教程
  • 华为HCIP Datacom H12-821 卷13
  • 基于SSM的酒店客房管理系统
  • 【数据结构与算法】最短路径,Floyd算法,Dijkstra算法 详解
  • PHP中如何进行网络爬虫和数据抓取?
  • 【Hadoop集群搭建】实验3:JDK安装及配置、Hadoop本地模式部署及测试
  • 分布式锁在Spring Boot应用中的优雅实现
  • 常用框架-Spring Boot
  • AttributeError: module ‘cv2‘ has no attribute ‘face‘
  • 不管你是普本还是双一流,建议你一定要尝试一下学习GIS开发
  • OurBMC大咖说丨第5期:BMC开发中的非标准化问题探讨
  • 空调制冷剂泄漏引发健康隐患,冷媒传感器实时监测至关重要
  • 开源TinyFSM状态机适用于嵌入式工业平台吗?
  • EE trade:利弗莫尔三步建仓法
  • Java中Callable的应用
  • 测试卡无法仪表注册问题分析
  • 【扩散模型(一)】Stable Diffusion中的重建分支(reconstruction branch)和条件分支(condition branch)
  • WPF——Binding
  • linux与windows环境下qt程序打包教程
  • LeetCode21-合并两个有序链表