4.【Orangepi Zero2】Linux定时器(signal、setitimer),软件PWM驱动舵机(SG90)

Linux定时器(signal、setitimer),软件PWM驱动舵机(SG90)

  • signal
  • setitimer
    • 示例
  • 软件PWM驱动舵机(SG90)

signal

详情请看Linux 3.进程间通信(shmget shmat shmdt shmctl 共享内存、signal signaction sigqueue 信号、semget semctl semop 信号量)

setitimer

setitimer 允许你设置定时器的初始值和重复间隔。一旦定时器启动,它将在到期时触发一个信号,通常是 SIGALRM 信号。你可以捕获这个信号并执行相应的操作。

#include <sys/time.h>int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value);

参数说明

which:指定要设置的定时器类型,可以是 ITIMER_REALITIMER_VIRTUALITIMER_PROF 中的一个。
ITIMER_REAL:以实际时间计时,通常用于实现定时器功能。
ITIMER_VIRTUAL:以进程的虚拟时间(CPU时间)计时。
ITIMER_PROF:以进程的虚拟时间和系统时间(CPU和墙钟时间)计时。

new_value:一个 struct itimerval 结构,用于指定新的定时器值。
old_value:一个 struct itimerval 结构,用于存储旧的定时器值(可选参数)。

Timer values are defined by the following structures:

struct itimerval {struct timeval it_interval; /* Interval for periodic timer */struct timeval it_value;    /* Time until next expiration */};struct timeval {time_t      tv_sec;         /* seconds */suseconds_t tv_usec;        /* microseconds */};

示例

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>void signal_handler(int signum)
{printf("Hello!\n");
}int main()
{struct itimerval timer;timer.it_interval.tv_sec = 1; /* Interval for periodic timer */timer.it_interval.tv_usec = 0;timer.it_value.tv_sec = 5; /* Time until next expiration */timer.it_value.tv_usec = 0;signal(SIGALRM, signal_handler);setitimer(ITIMER_REAL, &timer, NULL);while(1);return 0;
}

运行程序 5s 后开始输出 Hello! ,然后每隔 1s 输出 Hello!

在这里插入图片描述

软件PWM驱动舵机(SG90)

#include <stdio.h>
#include <sys/time.h>
#include <signal.h>
#include <unistd.h>
#include <wiringPi.h>#define STEER 5int angle = 0;
static int  cnt = 0;void signal_handler(int signum)
{if(cnt <= angle){digitalWrite(STEER, HIGH);}else{digitalWrite(STEER, LOW);}if(cnt == 40){cnt = 0;}cnt++;
}int main()
{delay(1);struct itimerval timer;timer.it_interval.tv_sec = 0; /* Interval for periodic timer */timer.it_interval.tv_usec = 500;timer.it_value.tv_sec = 1; /* Time until next expiration */timer.it_value.tv_usec = 0;signal(SIGALRM, signal_handler);setitimer(ITIMER_REAL, &timer, NULL);wiringPiSetup();pinMode(STEER, OUTPUT);while(1){printf("please input 1-0 2-45 3-90 4-135 5-180\n");scanf("%d",&angle);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/6592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

经纬度聚类:聚类算法比较

需求&#xff1a; 将经纬度数据&#xff0c;根据经纬度进行聚类 初始数据 data.csv K均值聚类 简介 K均值&#xff08;K-means&#xff09;聚类是一种常用的无监督学习算法&#xff0c;用于将数据集中的样本分成K个不同的簇&#xff08;cluster&#xff09;。其基本思想是…

支付宝支付流程

第一步前端&#xff1a;点击去结算&#xff0c;前端将商品的信息传递给后端&#xff0c;后端返回一个商品的订单号给到前端&#xff0c;前端将商品的订单号进行存储。 对应的前端代码&#xff1a;然后再跳转到支付页面 // 第一步 点击去结算 然后生成一个订单号 // 将选中的商…

Django之单文件上传(以图片为例)

一&#xff0c;创建项目 初始化&#xff0c;数据迁移&#xff0c;创建superuser&#xff0c;创建app等 二&#xff0c;配置settings.py 1&#xff0c;配置数据库&#xff08;本作者使用的mysql&#xff09;&#xff0c;以前文章有提到 2&#xff0c;配置静态文件存放路径 STAT…

2-手工sql注入(进阶篇) sqlilabs靶场5-10题

1. 阅读&#xff0c;学习本章前&#xff0c;可以先去看看基础篇&#xff1a;1-手工sql注入(基础篇)-CSDN博客 2. 本章通过对sqlilabs靶场的实战&#xff0c;关于sqlilabs靶场的搭建&#xff1a;Linux搭建靶场-CSDN博客 3. 本章会使用到sqlmap&#xff0c;关于sqlmap的命令&…

Vitis HLS 学习笔记--HLS流水线基本用法

目录 1. 简介 2. 示例 2.1 对内层循环打拍 2.2 对外层循环打拍 2.3 优化数组访问后打拍 3. 总结 1. 简介 本文介绍pipeline的基本用法。pipeline是一种用于提高硬件设计性能的技术。本文介绍了pipeline在累加计算函数中的应用。通过优化内外层循环和数组访问&#xff0c…

C++初学者,使用汉语编程

现在的IDE是完全支持中文编程的&#xff0c;对于C语系的爱好者来说&#xff0c;又可以发挥自己的想象力了。 今天使用一些宏定义写了一个小程序&#xff0c;用于玩弄C.

合合信息embedding模型登顶MTEB中文榜单:中文文本向量化技术的创新突破

引言MTEB中文榜单&#xff1a;权威性与挑战并存Embedding&#xff1a;特征与优势凸显模型应用&#xff1a;开启文本智能新篇章升级迭代&#xff1a;攻克行业技术难点结尾 引言 在信息化时代&#xff0c;文本数据呈爆炸式增长&#xff0c;如何高效、准确地处理和分析这些文本数…

Vue3-element-plus表格

一、element-plus 1.用组件属性实现跳转路由 <el-menu active-text-color"#ffd04b" background-color"#232323" :default-active"$route.path" //高亮 text-color"#fff"router><el-menu-item index"/article/channe…

【算法刷题日志】吸氧羊的StarryCoding之旅 - 贡献法计算

题目链接&#xff1a;https://www.starrycoding.com/problem/3 题目描述 吸氧羊终于注册了一个StarryCoding账号&#xff01;&#xff08;她很开心&#xff09; 但是吸氧羊忘记了它的密码&#xff0c;她想起你是计算机大师&#xff0c;于是就来请教你。 她虽然不记得密码了…

C++ | Leetcode C++题解之第70题爬楼梯

题目&#xff1a; 题解&#xff1a; class Solution { public:int climbStairs(int n) {double sqrt5 sqrt(5);double fibn pow((1 sqrt5) / 2, n 1) - pow((1 - sqrt5) / 2, n 1);return (int)round(fibn / sqrt5);} };

SPI(通信协议)

简介 SPI是一个同步的数据总线&#xff0c;也就是说它是用单独的数据线和一个单独的时钟信号来保证发送端和接收端的完美同步。 时钟是一个震荡信号&#xff0c;它告诉接收端在确切的时机对数据线上的信号进行采样。 产生时钟的一侧称为主机&#xff0c;另一侧称为从机。总是…

VMware虚拟机中ubuntu使用记录(6)—— 如何标定单目相机的内参(张正友标定法)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、张正友相机标定法1. 工具的准备2. 标定的步骤(1) 启动相机(2) 启动标定程序(3) 标定过程的操作(5)可能的报错 3. 标定文件内容解析 前言 张正友相机标定法…

编译 x264 for iOS

文章目录 编译在 FFMpeg 启用 x264其他编译选项报错处理 环境 &#xff1a; macOS 14.3.1 x264 - 20191217-2245 编译 1、下载 x264 源码 http://download.videolan.org/pub/videolan/x264/snapshots/ 这里我下载x264-snapshot-20191217-2245.tar.bz2 &#xff08;截止2024-…

OpenAI下周将发布ChatGPT搜索引擎,挑战谷歌搜索!

目前&#xff0c;多方位消息证实&#xff0c;OpenAI将会在5月9日上午10点公布该消息&#xff0c;大约是北京时间周五的凌晨2点。 5月3日&#xff0c;前Mila研究员、麻省理工讲师Lior S爆料&#xff0c;根据OpenAI最新的SSL证书日志显示&#xff0c;已经创建了search.chatgpt.c…

Flutter笔记:Widgets Easier组件库(12)使用消息吐丝(Notify Toasts)

Flutter笔记 Widgets Easier组件库&#xff08;12&#xff09;使用消息吐丝&#xff08;Notify Toasts&#xff09; - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 29114848416…

ICode国际青少年编程竞赛- Python-1级训练场-基础训练2

ICode国际青少年编程竞赛- Python-1级训练场-基础训练2 1、 a 4 # 变量a存储的数字是4 Dev.step(a) # 因为变量a的值是4&#xff0c;所以Dev.step(a)就相当于Dev.step(4)2、 a 1 # 变量a的值为1 for i in range(4):Dev.step(a)Dev.turnLeft()a a 1 # 变量a的值变为…

C语言数据结构之队列

目录 1.队列的概念及结构2.队列的实现逻辑3.队列的代码实现4.相关例题选择题 •͈ᴗ•͈ 个人主页&#xff1a;御翮 •͈ᴗ•͈ 个人专栏&#xff1a;C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#x…

【Flask 系统教程 2】路由的使用

Flask 是一个轻量级的 Python Web 框架&#xff0c;其简洁的设计使得构建 Web 应用变得轻而易举。其中&#xff0c;路由是 Flask 中至关重要的一部分&#xff0c;它定义了 URL 与视图函数之间的映射关系&#xff0c;决定了用户请求的处理方式。在本文中&#xff0c;我们将深入探…

【阿里云服务器】ubuntu 22.04.1安装docker以及部署java环境

我的服务器配置是2GB CPU 2GB 内存 Ubuntu22.04 目录 一、阿里云 ubuntu 22.04.1安装docker 二、docker基础命令 三、Windows电脑访问云服务器 四、安装java环境 安装OpenJDK 8&#xff08;可以根据需要安装其他版本的JDK&#xff09; 安装java的依赖管理工具maven 一、…

Java | Spring框架 | BeanFactory与ApplicationContext

Spring容器&#xff1a;BeanFactory与ApplicationContext Spring容器是Spring框架的核心&#xff0c;负责实例化、配置和组装Bean。 Spring容器有两种主要类型&#xff1a;BeanFactory和ApplicationContext。 一、BeanFactory 基本功能&#xff1a;BeanFactory是Spring框架…