先清理,后面肯定是赋值了,往下看
- /* Set bus clk div. */
- stcSysClkCfg.enHclkDiv = ClkSysclkDiv1; // 168MHz
- stcSysClkCfg.enExclkDiv = ClkSysclkDiv2; // 84MHz
- stcSysClkCfg.enPclk0Div = ClkSysclkDiv1; // 168MHz
- stcSysClkCfg.enPclk1Div = ClkSysclkDiv2; // 84MHz
- stcSysClkCfg.enPclk2Div = ClkSysclkDiv4; // 42MHz
- stcSysClkCfg.enPclk3Div = ClkSysclkDiv4; // 42MHz
- stcSysClkCfg.enPclk4Div = ClkSysclkDiv2; // 84MHz
- CLK_SysClkConfig(&stcSysClkCfg);
果然没错  
赋值结束后这个CLK_SysClkConfig是什么意思呢?
- /**
- *******************************************************************************
- ** \brief Configures the division factor for hclk,exck,pclk0,pclk1,pclk2,pclk3,
- ** pclk4 from system clock.
- **
- ** \param [in] pstcSysclkCfg The system clock configures struct.
- **
- ** \retval None
- **
- ** \note None
- **
- ******************************************************************************/
- void CLK_SysClkConfig(const stc_clk_sysclk_cfg_t *pstcSysclkCfg)
- {
- __IO uint32_t timeout = 0ul;
- __IO uint32_t fcg0 = M4_MSTP->FCG0;
- __IO uint32_t fcg1 = M4_MSTP->FCG1;
- __IO uint32_t fcg2 = M4_MSTP->FCG2;
- __IO uint32_t fcg3 = M4_MSTP->FCG3;
- ENABLE_FCG0_REG_WRITE();
- if(NULL != pstcSysclkCfg)
- {
- DDL_ASSERT(IS_SYSCLK_CONFIG_VALID(pstcSysclkCfg));
- /* Only current system clock source is MPLL need to close fcg0~fcg3 and
- open fcg0~fcg3 during switch system clock division.
- We need to backup fcg0~fcg3 before close them. */
- if(CLKSysSrcMPLL == M4_SYSREG->CMU_CKSWR_f.CKSW)
- {
- /* Close fcg0~fcg3. */
- M4_MSTP->FCG0 = DEFAULT_FCG0;
- M4_MSTP->FCG1 = DEFAULT_FCG1;
- M4_MSTP->FCG2 = DEFAULT_FCG2;
- M4_MSTP->FCG3 = DEFAULT_FCG3;
- /* Wait stable after close fcg. */
- do
- {
- timeout++;
- }while(timeout < CLK_FCG_STABLE);
- }
- /* Switch to target system clock division. */
- ENABLE_CLOCK_REG_WRITE();
- M4_SYSREG->CMU_SCFGR = ( (uint32_t)pstcSysclkCfg->enPclk0Div |
- ((uint32_t)pstcSysclkCfg->enPclk1Div << 4u) |
- ((uint32_t)pstcSysclkCfg->enPclk2Div << 8u) |
- ((uint32_t)pstcSysclkCfg->enPclk3Div << 12u) |
- ((uint32_t)pstcSysclkCfg->enPclk4Div << 16u) |
- ((uint32_t)pstcSysclkCfg->enExclkDiv << 20u) |
- ((uint32_t)pstcSysclkCfg->enHclkDiv << 24u) |
- ((uint32_t)pstcSysclkCfg->enHclkDiv << 28u));
- DISABLE_CLOCK_REG_WRITE();
- timeout = 0ul;
- do
- {
- timeout++;
- }while(timeout < CLK_SYSCLK_STABLE);
- /* Open fcg0~fcg3. */
- M4_MSTP->FCG0 = fcg0;
- M4_MSTP->FCG1 = fcg1;
- M4_MSTP->FCG2 = fcg2;
- M4_MSTP->FCG3 = fcg3;
- DISABLE_FCG0_REG_WRITE();
- /* Wait stable after open fcg. */
- timeout = 0ul;
- do
- {
- timeout++;
- }while(timeout < CLK_FCG_STABLE);
- }
- else
- {
- /* code */
- }
- }
看到了吧
|