找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

[M051] MINI51BSPBUG?

[复制链接]
楼主
a_ziliu 发表于 2014-1-15 17:59:47 | 显示全部楼层
不是bug,裡面有作判斷。
void CLK_SetModuleClock(uint32_t u32ModuleIdx, uint32_t u32ClkSrc, uint32_t u32ClkDiv)
{
  uint32_t u32tmp=0,u32sel=0,u32div=0;
   
  if(MODULE_CLKSEL_Msk(u32ModuleIdx)!=MODULE_NoMsk)
  {
    u32sel = (uint32_t)&CLK->CLKSEL0+((MODULE_CLKSEL(u32ModuleIdx))*4);
    u32tmp = *(volatile uint32_t *)(u32div);
    u32tmp = ( u32tmp & ~MODULE_CLKSEL_Msk(u32ModuleIdx)<<MODULE_CLKSEL_Pos(u32ModuleIdx) ) | u32ClkSrc;   
    *(volatile uint32_t *)(u32sel) = u32tmp;
  }

  if(MODULE_CLKDIV_Msk(u32ModuleIdx)!=MODULE_NoMsk)
  {
    u32div =(uint32_t)&CLK->CLKDIV+((MODULE_CLKDIV(u32ModuleIdx))*4);
    u32tmp = *(volatile uint32_t *)(u32div);
    u32tmp = ( u32tmp & ~MODULE_CLKDIV_Msk(u32ModuleIdx)<<MODULE_CLKDIV_Pos(u32ModuleIdx) ) | u32ClkDiv;  
    *(volatile uint32_t *)(u32div) = u32tmp;   
  }
}
回复 支持 反对

使用道具 举报

沙发
a_ziliu 发表于 2014-1-16 11:27:24 | 显示全部楼层
是的,但這個FUNCTION只有用在很簡單的SAMPLE CODE。
你可以按位操作的處理。
/* Enable IP clock */
    CLK->APBCLK = CLK_APBCLK_UART_EN_Msk | CLK_APBCLK_PWM01_EN_Msk | CLK_APBCLK_PWM23_EN_Msk | CLK_APBCLK_PWM45_EN_Msk;

    /* Select UART clock source from external crystal*/
    CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) | CLK_CLKSEL1_UART_S_XTAL;
    CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_PWM01_S_Msk)| CLK_CLKSEL1_PWM01_S_HCLK;
   
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU