库函数 为 : 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