imx6q核心定時器實現led閃爍
/************************************************************************* > File Name: led_drv.c > Author: XXDK > Email: [email protected] > Created Time: Sun 12 Mar 2017 07:16:54 AM PDT ************************************************************************/ #include<linux/init.h> #include<linux/module.h> #include<linux/timer.h> #include<asm/gpio.h> #include<mach/iomux-mx6q.h> #define SABRESD_GPIO_LED4 IMX_GPIO_NR(3, 21) #define SABRESD_GPIO_LED5 IMX_GPIO_NR(3, 22) #define SABRESD_GPIO_LED6 IMX_GPIO_NR(3, 23) // 例項化定時器物件 struct timer_list led_timer; int test_data = 88; // 構建led 型別 struct led_resource { char *name; int gpio; int data; }; // 例項化led物件叢集 struct led_resource led_res[] = { [0] = { .name = "led4", .gpio = SABRESD_GPIO_LED4 }, [1] = { .name = "led5", .gpio = SABRESD_GPIO_LED5 }, [2] = { .name = "led6", .gpio = SABRESD_GPIO_LED6 } }; // 定時器超時處理方法 static void Led_timer_expires_handle(unsigned long data) { int i; int *pdata = (int *)data; printk("data is: %d at %s\n", *pdata, __func__); if(gpio_get_value(led_res[0].gpio)) { for(i = 0; i < ARRAY_SIZE(led_res); i++) gpio_set_value(led_res[i].gpio, 0); } else if(!gpio_get_value(led_res[0].gpio)) { for(i = 0; i < ARRAY_SIZE(led_res); i++) gpio_set_value(led_res[i].gpio, 1); } /**************************************************** * 修改定時器超時時間 * 此函式等價於: * 1. 先刪除定時器 del_timer(&led_timer) * 2. 指定新的超時時間 expires = jiffies + 2*HZ * 3. 添加註冊啟動timer add_timer(&led_timer); ****************************************************/ mod_timer(&led_timer, jiffies + msecs_to_jiffies(2000)); } static int led_timer_init(void) { int i; // 申請 led 的 gpio 資源 for(i = 0; i < ARRAY_SIZE(led_res); i++) { gpio_request(led_res[i].gpio, led_res[i].name); gpio_direction_output(led_res[i].gpio, 0); } // 初始化定時器物件 init_timer(&led_timer); // 指定超時時間 led_timer.expires = jiffies + 2*HZ; // 指定超時處理方法 led_timer.function = Led_timer_expires_handle; // 給超時處理方法傳遞引數 led_timer.data = (unsigned long)&test_data; // 向核心註冊並且啟動定時器,開始倒計時 add_timer(&led_timer); return 0; } static void led_timer_exit(void) { int i; // 從核心移除定時器物件 del_timer(&led_timer); // 釋放led 的 gpio資源 for(i = 0; i < ARRAY_SIZE(led_res); i++) { gpio_direction_output(led_res[i].gpio, 0); gpio_free(led_res[i].gpio); } } module_init(led_timer_init); module_exit(led_timer_exit); MODULE_LICENSE("GPL");
相關推薦
imx6q核心定時器實現led閃爍
/************************************************************************* > File Name: led_drv.c > Author: XXDK > Email: [em
51微控制器定時器實現LED閃爍
要啟用一個定時器,先要開啟定時器,然後產生中斷 系統中斷: 初始化程式應完成如下工作: 對TMOD賦值,以確定T0和T1的工作方式。 計算初值,並將其寫入TH0、TL0或TH1、TL1。 中斷方式時,則對EA賦值,開放定時器中斷。 使TR0或TR1置位,啟動定時/計數器定時或計數。
STM32cubeMX 基於stm32的定時器實現定時1秒LED閃爍。
軟體: STM32CubeMX V4.25.0 keil_u5 韌體庫版本: STM32Cube FW_F1 V1.6.1 硬體: OneNet 麒麟座V1.4 在STM32CubeMX中新建專案,選擇正確的MCU型號
定時器查詢法和定時器中斷法實現LED閃爍
1、定時器查詢法實現LED閃爍 ;2013/4/23 ;延時1s閃爍 org 0000h ajmp start org 30h
定時器中斷實現LED閃爍
#include <reg52.h> typedef unsigned char u8; typedef unsigned int u16; sbit led=P2^0; void T
STM32-自學筆記(9.SysTick定時器控制LED燈閃爍,程式用到的庫函式介紹)
1.SysTick_CLKSourceConfig 函式原型:viod SysTick_CLKSourceConfig (u32 SysTick_CLKSource) 功能:選擇SysTick的時鐘源 引數:SysTick_CLKSource:SysTick時鐘源 引數:S
STM32-自學筆記(8.使用STM32的SysTick定時器控制LED燈閃爍)
SysTick定時器,被稱為“系統節拍時鐘”。SysTick屬於ARM Cortex-M3核心的一個內設,STM32也帶有SysTick定時器。 SysTick定時器的基本結構 SysTick工作原理: SysTick從時鐘源介面獲得時鐘驅動 從重灌暫存器將
用定時器控制Led燈閃爍
實驗目的 閃燈程式在嵌入式學習中猶如“Hello World!”在C/C++語言學習中一樣經典。它以簡單的方式引導了無數的嵌入式愛好者。通過本節的學習你可以基本瞭解STM32的GPIO以及基本定時器的使用。 硬體說明 本例程需要一個定時器和一個LED,其中LED就是擴充套件板上的紅色LED接在PD3上且正極接
DSP:C54x定時器及使用定時器產生led的1s週期閃爍
一、C54x的片內定時器是一個可程式設計的定時器,同時可以用於週期性地產生中斷,為16位計數器。定時器主要由定時器暫存器TIM、定時週期暫存器PRD、定時控制暫存器TCR(包括分頻係數TDDR、預標定
【定時器/中斷/PWM】利用一個定時器實現一路PWM波的輸出---點亮LED
------------------------------------------湊熱鬧的分割線------------------------------------------------ /*點亮led0(P1^0)和led7(P1^7) 其中led0以5v電壓正
定時器控制LED燈閃爍(定時器1)
TIM.c檔案#include "TIM1.h"void TIM1_Init(void){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; //使
2440裸機程式——定時器控制LED燈閃爍
/********************************************************************************************* * File name:timer.c * Author:ZXL * Description:通過定時器,讓LED燈每
3. 定時器控制 LED 燈閃爍(定時器 1 )
#include <TIM1.H> void TIM1_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; //使能
STM32實戰3.定時器控制LED燈閃爍(定時器1)
#include "sys.h" #include "led.h" #include "delay.h" #include "TIM1.h" int main(void) { NVIC_Configuration(); LED_Init(); delay_init
LINUX使用一個定時器實現設置任意數量定時器
ftw rup () int stdlib.h val span 時鐘 sof 本例子參考 Don Libes的Title: Implementing Software Timers例子改寫 為什麽需要這個功能,因為大多數計算機軟件時鐘系統通常只能有一個時鐘觸發一次
quartz定時器實現
quartz總結:要實現定時器quartz,我們註意兩步就行了,一是寫好實現類註意實現類的方法名要和配置中一致,二是做好配置。然後就可以測試了。①定時器實現類HealthRecodersTokenScheduler.javapublic class HealthRecodersTokenScheduler {
Spring自帶定時器實現定時任務
str esc exec count nis 開始 針對 exe 結束 在Spring框架中實現定時任務的辦法至少有2種(不包括Java原生的Timer及Executor實現方式),一種是集成第三方定時任務框架,如無處不在的Quartz;另一種便是Spring自帶的定時器(
Spring中定時器實現
很多 xmlns ice ... spring3 runtime pack tcl 首字母 在一些工作需要使用到定時器,Spring很好的集成了定時器的功能! 在Spring 中使用Quartz,本文介紹Spring3.0以後自主開發的定時任務工具,spring task
JavaScript定時器實現背景顏色交替變換
style doctype .get code c函數 idt 設置 eight remove 原生JavaScript定時器實現背景顏色交替變換 <!DOCTYPE html> <html lang="zh-cn"> <head&g
linux驅動開發學習--對中斷和核心定時器的學習筆記
一 中斷理解 &nb