MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / timer_int_init

Function timer_int_init

bsp/loongson/ls1cdev/libraries/ls1c_timer.c:257–301  ·  view source on GitHub ↗

* ��ʼ����ʱ��������ʼ�ж϶�ʱ * @timer_info ��ʱ���Ͷ�ʱʱ����Ϣ * @hrc ���ж� lrc ���ж� Ϊ1�򿪣�Ϊ0�ر� */

Source from the content-addressed store, hash-verified

255 * @hrc ���ж� lrc ���ж� Ϊ1�򿪣�Ϊ0�ر�
256*/
257void timer_int_init(timer_info_t *timer_info, int hrc, int lrc)
258{
259 unsigned int timer_reg_base = 0; // �Ĵ�������ַ
260 unsigned long timer_clk = 0; // Ӳ����ʱ����ʱ��
261 unsigned long h_value, l_value;
262 unsigned int ctrl = 0; // ���ƼĴ����еĿ�����Ϣ
263
264 // ����
265 if (NULL == timer_info)
266 {
267 return ;
268 }
269
270 /*
271 * �Ѷ�ʱʱ�任��Ϊ��������ֵ
272 * ������ֵ = ��ʱ����ʱ�� * ��ʱʱ��(��λns) / 1000000000
273 * ��о1c�Ķ�ʱ��ʱ��ΪAPBʱ�ӣ��ﵽ126Mhz��
274 * Ϊ���������̷����������������ֶ��Ż�����ļ���ʽ��Ҳ���Բ��ø�������
275 */
276 timer_clk = clk_get_apb_rate();
277 l_value = (timer_clk / 1000000) * (timer_info->time_ns / 1000); // ��1000000000���Ϊ1000000��1000
278 l_value = MIN(l_value, TIMER_COUNTER_MAX);
279 h_value = (timer_clk / 1000000) * (timer_info->time_h_ns / 1000); // ��1000000000���Ϊ1000000��1000
280 h_value = MIN(h_value, l_value);
281
282 // ���ƼĴ�����Ϣ
283 ctrl = (lrc << LS1C_PWM_INT_LRC_EN)
284 | (hrc << LS1C_PWM_INT_HRC_EN)
285 | (0 << LS1C_PWM_CNTR_RST)
286 | (0 << LS1C_PWM_INT_SR)
287 | (1 << LS1C_PWM_INTEN)
288 | (1 << LS1C_PWM_SINGLE)
289 | (1 << LS1C_PWM_OE)
290 | (1 << LS1C_PWM_CNT_EN);
291
292 // ���ø����Ĵ���
293 timer_reg_base = timer_get_reg_base(timer_info->timer); // ��ȡ�Ĵ�������ַ
294 reg_write_32(0, (volatile unsigned int *)(timer_reg_base + LS1C_PWM_HRC));
295 reg_write_32(l_value--, (volatile unsigned int *)(timer_reg_base + LS1C_PWM_LRC));
296 reg_write_32(h_value--, (volatile unsigned int *)(timer_reg_base + LS1C_PWM_HRC));
297 reg_write_32(0, (volatile unsigned int *)(timer_reg_base + LS1C_PWM_CNTR));
298 reg_write_32(ctrl, (volatile unsigned int *)(timer_reg_base + LS1C_PWM_CTRL));
299
300 return ;
301}

Callers

nothing calls this directly

Calls 3

timer_get_reg_baseFunction · 0.85
clk_get_apb_rateFunction · 0.70
reg_write_32Function · 0.70

Tested by

no test coverage detected