CLK_SetModuleClock 函数导致代码无法正常运行

qq973594515 |浏览1009次
收藏|2019/12/02 17:10

库函数 为 : Mini51DE_Series_BSP_CMSIS_v3.02.001

使用的 mcu 为  MINI51ZDE

上传不了 图片  就纯手打吧

    //选择 外设 的 时钟源 和 分频         

    CLK_SetModuleClock(UART_MODULE,CLK_CLKSEL1_UART_S_IRC22M,CLK_CLKDIV_UART(1));//串口

    CLK_SetModuleClock(TMR0_MODULE,CLK_CLKSEL1_TMR0_S_IRC22M,0);//定时器0

    CLK_SetModuleClock(TMR1_MODULE,CLK_CLKSEL1_TMR1_S_IRC22M,0);//定时器1

    CLK_SetModuleClock(PWM01_MODULE,CLK_CLKSEL1_PWM01_S_HCLK,0);//pwm0和1  

    CLK_SetModuleClock(ADC_MODULE,CLK_CLKSEL1_ADC_S_IRC22M,CLK_CLKDIV_ADC(1));//ADC

上面是代码  看示例代码中 是选择外设时钟源的

我使用了 串口和 adc   但是无法打印和adc采集

将这段代码 注释后  可以正常打印和adc采集  

使用的 是内部 22m 


//           CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk; //清空 usart 时钟源位

//        CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_IRC22M;// 设置 时钟源为 内部 22m

或者 我自己直接写 寄存器也是 可以的   

但是  使用 库函数  就直接挂掉  

所以 库函数 CLK_SetModuleClock  到底 做了什么操作呢 

求解答  谢谢

满意回答

2022/09/05 16:23

CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk; //清空 usart 时钟源位

CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_IRC22M;// 设置 时钟源为 内部 22m

这两句代码其实是有问题的,第一句将UART时钟源设为了外部晶振,可是没有外部晶振的情况下,会导致UART出问题,切内部HIRC时,用一句比较妥当

CLK->CLKSEL1 = (CLK->CLKSEL1 & ~CLK_CLKSEL1_UART_S_Msk) |CLK_CLKSEL1_UART_S_IRC22M

admin

其他回答(0)
0人关注该问题
+1
 加载中...