MSPM0学习,UART配置
前言
如果您未看过笔者之前写的"第一步配置"和"MSPM0教程之调用SYSCONFIG以及配置GPIO输出和输入",强烈建议您将这两篇先看了,以免出现配置错误,如果您以及完成了SYSCONFIG的配置,请继续往下看
MSPM0时钟介绍
MSPM0一共有两个时钟源,分别是SYSOSC和LFOSC,他们的频率分别为4M和32.768K
通过上图,我们可以看到,有多个时钟源,简单介绍一下
MCLK:主系统时钟,为PD1外设提供总线时钟(BUSCLK),系统初始化为32MHz;
ULPCLK:低功耗时钟,为PD0外设提供总线时钟,系统初始化为32MHz;
LFCLK:低频时钟,就是低频振荡器输出的32.768KHz;
CPUCLK:CPU运行时钟,,系统初始化为32MHz;
MFCLK:中频时钟,固定4MHz不变,使用的是SYSOC振荡器分频来,系统初始化默认关闭,需要软件打开;
MFPCLK:中频精准时钟,这个是作为时钟输出用的4MHz时钟,在SLEEP,STOP等低功耗模式下也可以持续输出;
以上文段来自创易栈MSPM0L1306开发板教程4 - 时钟
UART
接下来演示一下用MFCLK时钟源的UART配置
首先打开SYSCONFIG,在UART配置页点击ADD,将时钟源选择MFCLK。
可以看到这时候Calculated Clock Source为0,说明我们还没打开MFCLK的时钟源,点击侧面的树状图
然后再MFCLK那里点击一下即可,回到UART配置页那里,这时Calculated Clock Source还是0,我们还需要去SYSCTL那里配置一下
点击SYSCTL,选择Use Clock Tree
再返回UART,此时Calculated Clock Source已经有数值了
将过采样(Oversampling)设置为16倍以降低误差
开启接收中断
接下来绑定复用的IO,根据创易栈的手册,已经将UART1接在了CH340上了,所有我们绑定IO到PA10 和PA11
接下来保存,来到keil进行编译,让config.c更新一下配置信息
编写UART的中断函数
void UART1_IRQHandler(void)
{
if(DL_UART_getEnabledInterruptStatus(UART1_INST,DL_UART_INTERRUPT_RX) == DL_UART_INTERRUPT_RX)
{
volatile char c;
c = DL_UART_receiveData(UART1_INST);//接收数据
DL_UART_transmitData(UART1_INST, c);//发送数据
DL_UART_clearInterruptStatus(UART1_INST,DL_UART_INTERRUPT_RX);//清除中断标志位
}
}
编写main
int main(void)
{
SYSCFG_DL_init();
NVIC_EnableIRQ(UART1_INT_IRQn);
while (1) {
delay_ms(1000);
DL_GPIO_togglePins(GPIO_GRP_0_PORT,GPIO_GRP_0_LED_PIN);
}
}
效果
成功回显
转载请标明出处