MSP430F5438学习笔记 UART ACLK 9600-8-N-1

news/2024/11/16 22:49:36/

1.初始化UART0之前需要先初始化ACLK、SMCLK和MCLK。示例代码中使用XT1,ACLK为32768,SMCLK和MCLK约为8MHZ。

2.UART的时钟可以参考ACLK或者SMCLK,本例参考ACLK。由于参考ACLK时钟,所以串口速率不能超过32768。选择9600较为合适。

3.MSP430波特率的产生有两种模式,低频波特率产生和过采样波特率产生。代码中使用低频波特率产生。

4.代码的开头调用了stdio,在函数中宏重写了putchar函数,定向到UART单字节输出。

5.代码初始化之后输出 Hello MSP430,随后直接反射串口接收到的数据,例如发送123456即返回123456。

// 时钟默认情况
// FLL时钟      FLL选择 XT1
// 辅助时钟     ACLK选择 XT1          32768Hz
// 主系统时钟   MCLK选择 DCOCLKDIV    8000000Hz
// 子系统时钟   SMCLK选择 DCOCLKDIV   8000000Hz
// UART时钟选择 ACLK
// 低频波特率产生 9600-8-N-1
#include <msp430.h>
#include <stdio.h>
void clock_config(void);
void select_xt1(void);
void dco_config(void);
void uart_config(void);int main(void)
{clock_config();                             // 初始化时钟uart_config();_EINT();P4DIR |= BIT0;                              // P4.0输出printf("Hello MSP430!\r\n");while(1){P4OUT ^= BIT0;__delay_cycles(1000000);}
}void clock_config(void)
{WDTCTL = WDTPW + WDTHOLD;                   // 停止看门狗select_xt1();                               // 选择XT1dco_config();                               // ACLK = XT1 = 32.768K// MCLK = SMCLK = 8000K
}void select_xt1(void)
{// 启动XT1P7SEL |= 0x03;                              // P7.0 P7.1 外设功能UCSCTL6 &= ~(XT1OFF);                       // XT1打开UCSCTL6 |= XCAP_3;                          // 内部电容do{UCSCTL7 &= ~XT1LFOFFG;                  // 清楚XT1错误标记}while (UCSCTL7&XT1LFOFFG);                 // 检测XT1错误标记
}void dco_config(void)
{__bis_SR_register(SCG0);                    // 禁止FLL功能UCSCTL0 = 0x0000;                           // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_5;                        // DCO最大频率为16MHzUCSCTL2 = FLLD_1 + 243;                     // 设置DCO频率为8MHz// MCLK = SMCLK= Fdcoclkdiv = (N+1)X(Ffllrefclk/n)// N为唯一需要计算的值// Ffllrefclk FLL参考时钟,默认为XT1// n取默认值,此时为1// (243 + 1) * 32768 = 8MHz__bic_SR_register(SCG0);                    // 使能FLL功能// 必要延时__delay_cycles(250000);// 清楚错误标志位do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);// 清除所有振荡器错误标志位SFRIFG1 &= ~OFIFG;                      // 清除振荡器错误}while (SFRIFG1&OFIFG);                     // 等待清楚完成
}void uart_config(void)
{P3SEL = 0x30;                               // 选择P3.4和P3.5的复用功能UCA0CTL1 |= UCSWRST;                        // 软件复位UCA0CTL1 |= UCSSEL_1;                       // 选择ACLK时钟UCA0BR0 = 3;                                // 查表获得UCA0BR1 = 0;                                // UCA0BRX和UCA0MCTL数值UCA0MCTL |= UCBRS_3 + UCBRF_0;              //UCA0CTL1 &= ~UCSWRST;                       //UCA0IE |= UCRXIE;                           // 使能接收中断
}int putchar(int ch)
{UCA0TXBUF = ch;while(!(UCA0IFG & UCTXIFG));return ch;
}#pragma vector=USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void)
{switch(__even_in_range(UCA0IV,4)){case 0:break;case 2:                                   // 接收中断while (!(UCA0IFG&UCTXIFG));             // 等待发送完成UCA0TXBUF = UCA0RXBUF;                  // 接收缓冲区break;case 4:break;                             // 发送中断default: break;}
}




http://www.ppmy.cn/news/696551.html

相关文章

ESP32设备驱动-SCD40二氧化碳湿度和温度传感器驱动

SCD40二氧化碳湿度和温度传感器驱动 文章目录 SCD40二氧化碳湿度和温度传感器驱动1、SCD40介绍2、硬件准备3、软件准备4、驱动实现1、SCD40介绍 SCD4x 是 Sensirion 的下一代微型 CO2 传感器。 该传感器基于光声 NDIR 传感原理和 Sensirion 的专利 PASens 和 CMOSens 技术,以…

常用芯片数据手册—— INA333 低功耗、精密仪表放大器(德仪)

文章目录 主要功能应用范围主要参数工作参数引脚定义 接线方案注意事项关于增益电阻 主要功能 INA333 器件是一款低功耗的精密仪表放大器&#xff0c;具有出色的精度。该器件采用通用的三运算放大器设计&#xff0c;并且拥有小巧尺寸和低功耗特性&#xff0c;非常适合各类便携…

Cortex-A72核心板 | RK3399六核

64位6核“服务器级”处理器 基于瑞芯微国产RK3399处理器设计&#xff0c;集成2颗1.8GHz ARM Cortex-A72内核、4颗1.4GHz ARM Cortex-A53内核&#xff0c;64位系统&#xff0c;比肩桌面电脑处理性能&#xff1b;集成LPDDR4&#xff0c;内存支持4GB、 8GB或更高&#xff1b;适用于…

ANC 芯片 3435

AS3415/AS3435 Integrated Active Noise Cancelling Solution with Bypass Feature

OPA2369AIDGKR

OPA2369AIDGKR 规格 产品属性 制造商:Texas Instruments 产品种类:运算放大器 - 运放 RoHS: 详细信息 安装风格:SMD/SMT 封装 / 箱体:VSSOP-8 通道数量:2 Channel 电源电压-比较大:5.5 V GBP-增益带宽产品:12 kHz 每个通道的输出电流:10 mA SR - 转换速率 :5 mV/us Vos - 输入偏…

MCU极海 APM32F407VGT6 兼容替代 STM32F407VGT6

MCU极海 APM32F407VGT6 兼容替代 STM32F407VGT6APM32F407VGT6产品概述 APM32F407系列MCU&#xff0c;基于Arm Cortex-M4内核&#xff0c;全面兼顾高运算、高实时、易用性等特点&#xff0c;拥有出色的CPU运算性能&#xff0c;支持单精度FPU、增强型DSP处理指令&#xff1b;超大…

基于AS3933 - 3通道125K低频唤醒接收器

目录 1.AS3933介绍 2. 主要特点 3. 运行模式 3.1 Power Down mode 3.2 Listening mode 3.3 Preamble Detection/Pattern Correlation 3.4 Data Receiving 4. 唤醒协议 - 载波频率125K 4.1 Without pattern detection(Manchester decoder disabled) 4.2 Single Patter…

DAC8760+STM32F407单电源电路硬件测试

DAC8760STM32F407单电源电路硬件测试 特性 16位DAC 10V至36V单电源&#xff0c;或者18V的双电源供电 输出电流:4-20mA或0-20mA或0-24mA 输出电压:0-5V或0-10V或5V或10V&#xff0c;可以通过设置寄存器超出量程10%的范围. 同步电压和电流输出 可靠特性 CRC校验 看门狗 过热告…