4.2.2. CMU配置
4.2.2.1. 驱动配置
因为 CMU 是每个系统的必需模块,CMU 驱动默认会被编译进系统,所以不需要在 scons --menuconfig
菜单中进行使能。
4.2.2.2. 系统 Clock 配置
ZX-RTT 中时钟配置的位置有两处:一处在板级初始化,一处在模块驱动初始化。
板级初始化时配置的时钟是一些系统时钟和部分模块时钟,可以通过两种方式对这部分时钟进行配置
通过
scons --menuconfig
菜单进行配置
scons --menuconfig
Board options --->
Clocks options --->
通过修改源文件
具体的配置路径在 zx-rtt\target\$chip\$board\sys_clk.c
。例如:
struct aic_sysclk aic_sysclk_config[] = {
{1200000000, CLK_PLL_INT1},
{491520000, CLK_PLL_FRA1},
{840000000, CLK_PLL_FRA2},
{240000000, CLK_AXI0},
{240000000, CLK_AHB0},
{100000000, CLK_APB0},
{24000000, CLK_APB1},
{600000000, CLK_CPU},
{25000000, CLK_OUT2},
#ifdef AIC_USING_UART0
{48000000, CLK_UART0},
#endif
}
void aic_board_sysclk_init(void)
{
uint32_t i = 0;
// 设置时钟频率
for (i=0; i<sizeof(aic_sysclk_config)/sizeof(struct aic_sysclk); i++) {
hal_clk_set_freq(aic_sysclk_config[i].clk_id, aic_sysclk_config[i].freq);
}
}
4.2.2.3. 模块 Clock 配置
部分模块把时钟配置放在驱动初始化中。例如:
int hal_pwm_init(void)
{
// 设置时钟频率
hal_clk_set_freq(CLK_PWM, PWM_CLK_RATE);
// 使能时钟
hal_clk_enable(CLK_PWM);
}
4.2.2.4. 模块 Reset 配置
模块放开复位一般在驱动初始化中操作,复位配置有两种方式:
和时钟一起操作,使能时钟的同时放开复位。例如:
// 使能时钟 & 放开复位
hal_clk_enable_deassertrst(CLK_PWM);
单独操作,独立的放开复位。例如:
// 放开复位
hal_reset_deassert(RESET_PWM);