This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好:
在AM335X的linux3.2内核中 使用dmtimer 写一个定时器驱动,无论如何更改
omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500); 这2个函数中的设定值 范围从(0xFFFFFFFF-500)到(0xFFFFFFFF - 0x0000FFFF)输出的GPIO都会看到一个390kHz的波形。
如果设定为(0XFFFFFFFFT-0xFFFF0000)则在示波器下无法看到波形
问题1:
如何修改CPU配置寄存器能够使得定时器正常工作?
问题2
通过omap_dm_timer_get_fclk()和clk_get_rate 能够得到rate为24000000,获取到的rate是否为系统时钟频率?
非常感谢~~
设定代码在驱动的init函数总,代码如下
timer = omap_dm_timer_request_specific(7); //得到定时器7
irq = omap_dm_timer_get_irq(timer); //得到中断号
ret = request_irq(irq,mytimer_interrupt, IRQF_DISABLED | IRQF_TIMER , "heat_timer_init",NULL);//注册中断
omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500);
/* Enable overflow interrupt */
omap_dm_timer_set_int_enable(timer, OMAP_TIMER_INT_OVERFLOW);
/*
* Set counter value to overflow counter after
* one tick and start timer.
*/
//omap_dm_timer_set_load_start(timer, 0, load);
// start the timer!
omap_dm_timer_start(timer);
// stop the timer!
//omap_dm_timer_stop(timer);
您好:
在AM335X的linux3.2内核中 使用dmtimer 写一个定时器驱动,无论如何更改
omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500); 这2个函数中的设定值 范围从(0xFFFFFFFF-500)到(0xFFFFFFFF - 0x0000FFFF)输出的GPIO都会看到一个390kHz的波形。
如果设定为(0XFFFFFFFFT-0xFFFF0000)则在示波器下无法看到波形
问题1:
如何修改CPU配置寄存器能够使得定时器正常工作?
问题2
通过omap_dm_timer_get_fclk()和clk_get_rate 能够得到rate为24000000,获取到的rate是否为系统时钟频率?
非常感谢~~
设定代码在驱动的init函数总,代码如下
timer = omap_dm_timer_request_specific(7); //得到定时器7
irq = omap_dm_timer_get_irq(timer); //得到中断号
ret = request_irq(irq,mytimer_interrupt, IRQF_DISABLED | IRQF_TIMER , "heat_timer_init",NULL);//注册中断
omap_dm_timer_set_load(timer, 0, 0xFFFFFFFF-500);
omap_dm_timer_write_counter(timer, 0xFFFFFFFF-500);
/* Enable overflow interrupt */
omap_dm_timer_set_int_enable(timer, OMAP_TIMER_INT_OVERFLOW);
/*
* Set counter value to overflow counter after
* one tick and start timer.
*/
//omap_dm_timer_set_load_start(timer, 0, load);
// start the timer!
omap_dm_timer_start(timer);
// stop the timer!
//omap_dm_timer_stop(timer);