【龙芯1c库】封装时钟接口和使用示例

龙芯1c库是把龙芯1c的常用外设的常用功能封装为一个库,类似于STM32库。Git地址:https://gitee.com/caogos/OpenLoongsonLib1c

本文通过“龙芯1c库”中提供的时钟相关接口,获取了PLL,CPU,DDR和APB的时钟,并将其打印出来,然后再详细讲解是如何封装这几个接口的。

龙芯1c库中时钟接口使用示例

时钟接口简介

提供几个clk_get_xxx_rate()的接口,用于获取相应的频率。比如
pll的接口为clk_get_pll_rate(),
cpu的是clk_get_cpu_rate()。
apb的是clk_get_apb_rate()。

测试思路

在main()函数中获取pll,cpu,ddr,apb的频率,并打印出来。

代码清单

#include "../lib/gpio.h"
#include "../lib/clock.h"
#include "../lib/pwm_timer.h"
#include "../lib/ls1c_regs.h"
#include "led.h"typedef long long off_t;struct callvectors {int     (*open) (char *, int, int);int     (*close) (int);int     (*read) (int, void *, int);int     (*write) (int, void *, int);off_t   (*lseek) (int, off_t, int);int     (*printf) (const char *, ...);void    (*cacheflush) (void);char    *(*gets) (char *);
};struct callvectors *callvec;#define	myprintf (*callvec->printf)
#define	mygets   (*callvec->gets)int main(int argc, char **argv, char **env, struct callvectors *cv)
{callvec = cv;unsigned long pll_rate, cpu_rate, ddr_rate, apb_rate, dc_rate;unsigned int ctrl;volatile unsigned int *clk_div_param = (volatile unsigned int *)LS1C_CLK_DIV_PARAM;ctrl = *clk_div_param;myprintf("[%s] ctrl=0x%x\n", __FUNCTION__, ctrl);pll_rate = clk_get_pll_rate();cpu_rate = clk_get_cpu_rate();ddr_rate = clk_get_ddr_rate();apb_rate = clk_get_apb_rate();dc_rate  = clk_get_dc_rate();myprintf("[%s] pll_rate=%luHz, cpu_rate=%luHz, ddr_rate=%luHz, apb_rate=%luHz, dc_rate=%luHz\n", __FUNCTION__, pll_rate, cpu_rate, ddr_rate, apb_rate, dc_rate);
//    test_pwm();return(0);
}

运行结果


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部