#include #include #include #include MODULE_AUTHOR("Moritz Rosenthal"); MODULE_DESCRIPTION("This module does nothing useful"); MODULE_LICENSE("Dual BSD/GPL"); struct timer_list timer1; unsigned char value; void timer1_routine(unsigned long data) { mod_timer(&timer1, jiffies + HZ); /* restarting timer */ value ^= 0x01; gpio_set_value(110, value); } static int stm32f4_blink_init (void) { printk(KERN_ALERT "Starting blink module\n"); value = 0; gpio_set_value(109, 1); /* initialize a timer */ init_timer(&timer1); timer1.function = timer1_routine; timer1.data = 1; timer1.expires = jiffies + HZ; /* 1 second */ add_timer(&timer1); return 0; } static void stm32f4_blink_exit (void) { printk(KERN_ALERT "No more blinking\n"); del_timer_sync(&timer1); /* Deleting the timer */ gpio_set_value(109, 0); gpio_set_value(110, 0); } module_init(stm32f4_blink_init); module_exit(stm32f4_blink_exit);