hc32l13x使用内部时钟,开启串口示例代码
时间: 2024-03-01 22:51:10 浏览: 98
stm32串口,时钟例程
5星 · 资源好评率100%
好的,下面是使用内部时钟和开启串口的示例代码:
```c
#include "hc32l13x.h"
void UART0_IRQHandler(void)
{
/* 判断是否接收到数据 */
if (UART0->ISR & UART_ISR_RDA_IS_Msk)
{
/* 读取接收到的数据 */
uint8_t data = UART0->RBR;
/* 处理接收到的数据 */
// TODO: 处理接收到的数据
}
/* 判断是否发送完成 */
if (UART0->ISR & UART_ISR_THRE_IS_Msk)
{
/* 发送下一组数据 */
// TODO: 发送下一组数据
}
}
int main(void)
{
/* 使能内部高速时钟 */
CMU->CKSWT &= ~CMU_CKSWT_HXTEN_Msk;
/* 选择内部高速时钟作为系统时钟源 */
CMU->CKSWT &= ~CMU_CKSWT_SW_Msk;
/* 设置时钟分频器,这里选择不分频 */
CMU->CLKDIV &= ~CMU_CLKDIV_HCLKDIV_Msk;
/* 使能串口时钟 */
CMU->CLKEN |= CMU_CLKEN_UART0CKEN_Msk;
/* 配置串口工作模式,这里选择8位数据位、无校验位、1位停止位 */
UART0->LCR = UART_LCR_WLS_Msk;
/* 配置波特率,这里选择115200 */
UART0->BAUD = UART_BAUD_DIV_X_EN_Msk | UART_BAUD_DIV_X_ONE_Msk |
(SystemCoreClock / (115200 * 16)) - 1;
/* 使能串口接收和发送中断 */
UART0->IER |= UART_IER_RDA_IEN_Msk | UART_IER_THRE_IEN_Msk;
/* 使能全局中断 */
NVIC_EnableIRQ(UART0_IRQn);
__enable_irq();
while (1)
{
// TODO: 主循环中的其他操作
}
}
```
在这个示例代码中,我们使用内部高速时钟作为系统时钟源,并且选择不分频。然后,我们使能了串口时钟,并配置了串口工作模式、波特率和中断。在中断处理函数中,我们处理了串口接收和发送的中断。最后,在主循环中可以进行其他操作。
阅读全文