根据你提供的代码片段来看,你在系统初始化中启用了内部高速时钟源(CLK_PWRCON_HIRC_EN_Msk),并等待时钟稳定(CLK_CLKSTATUS_IRC22M_STB_Msk)。但是没有看到你配置串口和I2C相关的时钟和引脚。
首先,你需要根据你的应用要求选择合适的时钟源和分频器来为串口和I2C配置正确的工作时钟。你可以使用CLK_SetModuleClock()函数来设置模块时钟。例如,如果你要使用PCLK1作为串口和I2C的时钟源,可以按照以下方式进行设置:
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_PCLK1, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(I2C1_MODULE, CLK_CLKSEL1_I2C1SEL_PCLK1, CLK_CLKDIV_I2C(1));
这将将UART0和I2C1的时钟源选择为PCLK1,并将分频器设置为1。
然后,你需要配置正确的引脚配置来使得串口和I2C正常工作。你可以使用SYS->GPB_MFP和SYS->GPC_MFP寄存器来设置引脚映射。例如,如果你要使用PB0和PB1作为UART0的引脚,可以进行如下设置:
SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
SYS->GPB_MFP |= (SYS_GPB_MFP_PB0_UART0_RX | SYS_GPB_MFP_PB1_UART0_TX);
类似地,你需要设置正确的引脚映射来配置I2C引脚。
最后,你需要使能相应的时钟和模块使得串口和I2C能够正常工作。你可以使用CLK_EnableModuleClock()函数来使能模块时钟。例如,关于UART0和I2C1的使能可以如下设置:
CLK_EnableModuleClock(UART0_MODULE);
CLK_EnableModuleClock(I2C1_MODULE);
请注意,以上代码片段仅供参考,并可能需要根据你的硬件和应用需求进行适当调整。
除了时钟和引脚配置外,还需要确保其他相关的初始化和配置(例如UART和I2C的初始化、中断配置等)正确完成。
如果你确认了以上配置正确无误,但仍然无法正常使用串口和I2C,可能需要进一步检查硬件电路和信号连接,以确定是否存在硬件问题。
另外,如果你手头没有实际的开发板,很难判断是否是硬件问题。建议你尽量获取一个实际板子进行调试和测试,以便更好地分析和解决问题。
根据你提供的代码片段来看,你在系统初始化中启用了内部高速时钟源(CLK_PWRCON_HIRC_EN_Msk),并等待时钟稳定(CLK_CLKSTATUS_IRC22M_STB_Msk)。但是没有看到你配置串口和I2C相关的时钟和引脚。
首先,你需要根据你的应用要求选择合适的时钟源和分频器来为串口和I2C配置正确的工作时钟。你可以使用CLK_SetModuleClock()函数来设置模块时钟。例如,如果你要使用PCLK1作为串口和I2C的时钟源,可以按照以下方式进行设置:
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UARTSEL_PCLK1, CLK_CLKDIV_UART(1));
CLK_SetModuleClock(I2C1_MODULE, CLK_CLKSEL1_I2C1SEL_PCLK1, CLK_CLKDIV_I2C(1));
这将将UART0和I2C1的时钟源选择为PCLK1,并将分频器设置为1。
然后,你需要配置正确的引脚配置来使得串口和I2C正常工作。你可以使用SYS->GPB_MFP和SYS->GPC_MFP寄存器来设置引脚映射。例如,如果你要使用PB0和PB1作为UART0的引脚,可以进行如下设置:
SYS->GPB_MFP &= ~(SYS_GPB_MFP_PB0_Msk | SYS_GPB_MFP_PB1_Msk);
SYS->GPB_MFP |= (SYS_GPB_MFP_PB0_UART0_RX | SYS_GPB_MFP_PB1_UART0_TX);
类似地,你需要设置正确的引脚映射来配置I2C引脚。
最后,你需要使能相应的时钟和模块使得串口和I2C能够正常工作。你可以使用CLK_EnableModuleClock()函数来使能模块时钟。例如,关于UART0和I2C1的使能可以如下设置:
CLK_EnableModuleClock(UART0_MODULE);
CLK_EnableModuleClock(I2C1_MODULE);
请注意,以上代码片段仅供参考,并可能需要根据你的硬件和应用需求进行适当调整。
除了时钟和引脚配置外,还需要确保其他相关的初始化和配置(例如UART和I2C的初始化、中断配置等)正确完成。
如果你确认了以上配置正确无误,但仍然无法正常使用串口和I2C,可能需要进一步检查硬件电路和信号连接,以确定是否存在硬件问题。
另外,如果你手头没有实际的开发板,很难判断是否是硬件问题。建议你尽量获取一个实际板子进行调试和测试,以便更好地分析和解决问题。
举报