gpio口、内核定时器使用

/*申请gpio*/

int gpio_request(unsigned gpio, const char *label);

/*设置gpio为输入状态,即设置如(GPH0CON)*/

int gpio_direction_input(unsigned gpio);

/*设置gpio为输出状态,即设置如(GPH0CON)*/

int gpio_direction_output(unsigned gpio, int value);

/*设置gpio为输入或输出状态,即设置如(GPH0CON)*/

int s3c_gpio_cfgpin(unsigned int pin, unsigned int config);

/*
 读取gpio的值,0或1.即读取(GPHODAT)
*/
int gpio_get_value(unsigned gpio);

/*
 向gpio设置值,0或1,即设置(GPHODAT)
*/
void gpio_set_value(unsigned gpio, int value);

 

struct timer_list timer;

init_timer(&timer);
timer.function = &gpio_check_button;
timer.data = (unsigned long)bdata;
timer.expires = jiffies + msecs_to_jiffies(500);

add_timer(&timer);/*内核定时器第一次用*/

mod_timer(&timer, jiffies + msecs_to_jiffies(500));/*内核定时器第二次用*/

在中断服务程序中,添加内核定时器,服务程序执行完才开始添加定时器,开始计时。

时间: 2024-09-28 19:28:15

gpio口、内核定时器使用的相关文章

使用linux内核hrtimer高精度定时器实现GPIO口模拟PWM,【原创】

关键词:Android  linux hrtimer 蜂鸣器  等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418  作者:庄泽彬(欢迎转载,请注明作者) 邮箱:[email protected] 程序描述:本文控制的设备是无源蜂鸣器,由于无源蜂鸣器是需要产生一定的频率的PWM才能够控制蜂鸣器,不像有源蜂鸣器,只需要提供高低电平就可以控制蜂鸣器.linux内核普通的定时器,由于具有一定的局限性,不能达到纳秒级别的定时

Linux中的gpio口使用方法

Linux中的IO使用方法 应该是新版本内核才有的方法.请参考:./Documentation/gpio.txt文件 提供的API:驱动需要包含 #include <linux/gpio.h> 判断一个IO是否合法:int gpio_is_valid(int number); 设置GPIO的方向,如果是输出同时设置电平:/* set as input or output, returning 0 or negative errno */int gpio_direction_input(unsi

51单片机GPIO口模拟串口通信

51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于: 分类: 深入C语言(20) 作者同类文章X 1 #include "reg52.h" 2 #include "intrins.h" 3 #include "math.h" 4 #include "stdio.h" 5 sbit BT_SND =P1^5; 6 sbit

OpenWRT GPIO口控制 WLED

Linux系统下GPIO系统架构介绍 关于这个GPIO很久以前一直以为很简单,但是,当你需要给一个特定的系统,搞这些GPIO的时候,你会发现,事实并不是如此,比如,mt7620n. GPIO#72是控制WLED -> WLAN LED. GPIO#40~44是控制WAN, LANLED. GPIO#1是控制Reset 这些东西以为自己写一个GPIO driver就完成了,其实没有那么简单,光是这个小驱动你怎么编译都比较麻烦,所以还是乖乖的学习OpenWRT的系统架构吧. 这里要说道重点dts.这

【Rayeager PX2】PX2上使用GPIO口的例程

之前楼主在论坛中已经分享了简单驱动的编写,现在楼主再来教刚接触板子的新手们如何引用调用GPIO,不过这里楼主并没有将GPIO口的函数封装成库,然后在eclipse上调用,楼主这边的例子,只是简单的用adb工具进入板中,然后用一个测试程序使用端口,有兴趣想要在安卓界面调用端口的,可以参考楼主之前写的那编jni调用的帖子. 首先我们依旧来简单地说下步骤, 1.在/kernel/drivers下建个文件夹,自己创建并添加Kconfig和makefile,内容如下, 2.在该目录下写个gpio驱动,内容

Linux 内核开发 - 内核定时器

时间差的度量 系统的定时器硬件以固定的频率产生时钟中断,产生始终中断的间隔以HZ 常量来决定,通常在50~1200之间,x86默认是1000,HZ可以根据不同的内核来配置. Linux 采用jiffies (unsigned long)来对时钟中断进行计数,每当发生时钟中断时jiffies的值将+1,因此jiffies就记录了系统开机以来的时钟中断总次数.在驱动开发过程中经常会使用时钟中断来计算不同事件的时间间隔. 延迟执行 对于不精确的时间延迟要求,可以使用while 循环来计算延迟的时间.

树莓派GPIO口驱动编写

一.wiringpi写法 #include <wiringPi.h> #include <stdlib.h> int main(int argc,char *argv[]) { if(argc<2) return -1; if(argc==2) { wiringPiSetup(); pinMode(0, OUTPUT); if(atoi(argv[1]) == 1) digitalWrite(0, HIGH); else if(atoi(argv[1]) == 0) digi

把握linux内核设计(七):内核定时器和定时执行

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 前面章节说到了把工作推后到除现在以外的时间执行的机制是下半部机制,但是当你需要将工作推后到某个确定的时间段之后执行,使用定时器是很好的选择. 上一节内核时间管理中讲到内核在始终中断发生执行定时器,定时器作为软中断在下半部上下文中执行.时钟中断处理程序会执行update_process_times函数,在该函数中运行run_local_timers()函数来标记一个软中断去处理

stm32寄存器版学习笔记01 GPIO口的配置(LED、按键)

STM32的I/O口可以由软件配置成如下8种模式:输入浮空.输入上拉.输入下拉.模拟输入.开漏输出.推挽输出.推挽式复用功能及开漏复用功能.每个I/O口由7个寄存器来控制:配置模式的端口配置寄存器CRL和CRH(模式.速度):数据寄存器IDR和ODR:置位/复位寄存器BSRR:复位寄存器BRR:锁存寄存器LCKR. I/O口模式: GPIO的8种模式 通用输出 推挽输出(Puch-Pull) 可以输出高.低电平,连接数字器件   开漏输出(Open-Drain) 开漏引脚不连接外部的上拉电阻时,