历史上的今天
返回首页

历史上的今天

今天是:2025年04月23日(星期三)

正在发生

2020年04月23日 | MSP430F5438学习笔记 UART ACLK 9600-8-N-1

2020-04-23 来源:eefocus

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

#include

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!rn");

    while(1)

    {

        P4OUT ^= BIT0;

        __delay_cycles(1000000);

    }

}

 

void clock_config(void)

{

    WDTCTL = WDTPW + WDTHOLD;                   // 停止看门狗

    select_xt1();                               // 选择XT1

    dco_config();                               // ACLK = XT1 = 32.768K

                                                // MCLK = SMCLK = 8000K

}

 

void select_xt1(void)

{

    // 启动XT1

    P7SEL |= 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, MODx

    UCSCTL1 = DCORSEL_5;                        // DCO最大频率为16MHz

    UCSCTL2 = 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;

  }

}

推荐阅读

史海拾趣

High Energy Corp公司的发展小趣事

机顶盒,全称为数字视频变换盒,是连接电视机与外部信号源的关键设备,具备高度的专业性和广泛的科普意义。从广义上讲,任何与电视机连接的网络终端设备均可称为机顶盒,包括传统的模拟频道增补器到现代的数字卫星机顶盒、有线电视数字机顶盒及IPTV机顶盒等。其主要功能在于接收来自有线电缆、卫星天线、宽带网络及地面广播的数字电视信号,并将这些信号转换为电视机可识别的视频和音频格式,极大地丰富了用户的观看选择,提升了观看体验。

机顶盒不仅能提供高清、4K甚至超高清的电视节目,还具备网络交互功能,用户可通过机顶盒连接互联网,享受在线购物、观看网络视频、玩游戏等多元化服务。此外,机顶盒还支持电子节目指南、因特网网页浏览等增值服务,使电视机不再仅仅是接收信息的单向设备,而是成为与用户进行互动的智能终端。

随着技术的不断进步,机顶盒正朝着高清化、智能化、多功能化方向发展。例如,通过智能推荐算法,机顶盒能为用户提供个性化的节目推荐;借助语音识别技术,用户可通过语音指令控制机顶盒,实现便捷操作。未来,机顶盒将继续融合新技术,如人工智能、云计算等,为用户提供更加丰富的娱乐选择和更加智能的观看体验。

G-Mag Usa公司的发展小趣事

面对数字化转型的浪潮,G-Mag在2020年决定全面拥抱智能制造。公司投入巨资建设智能工厂和数字化管理平台,引入先进的自动化设备和人工智能技术优化生产流程和管理效率。通过数字化转型,G-Mag实现了生产过程的智能化、自动化和可视化监控,大大提高了生产效率和产品质量。同时,G-Mag还利用大数据和云计算技术分析市场需求和消费者行为,为产品研发和市场推广提供精准的数据支持。在数字化转型的推动下,G-Mag不仅提升了自身的竞争力,还为整个电子行业的智能化发展树立了标杆。

APLUS Products公司的发展小趣事

随着国内市场的不断饱和,APLUS Products公司开始寻求国际化发展的道路。在XXXX年,公司成功打入欧洲市场,并在当地建立了分支机构。通过深入了解欧洲消费者的需求和偏好,公司不断优化产品设计和营销策略,逐渐赢得了欧洲消费者的认可和喜爱。

Elite Semiconductor Products Inc公司的发展小趣事

随着全球对环保和可持续发展的关注度不断提高,Elite也积极响应这一趋势。公司注重环保理念在生产过程中的贯彻实施,采用环保材料和节能技术,减少生产过程中的污染排放。同时,Elite还积极参与环保公益活动,推动环保理念的普及和实践。这些努力不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

Hirosugi-Keiki公司的发展小趣事

Elite Semiconductor Products Inc(以下简称Elite)自创立之初,就坚持以技术创新为核心竞争力。公司创始人是一位经验丰富的半导体工程师,他深知在电子行业,技术的领先意味着市场的领先。因此,Elite投入大量资源进行研发,不断推出具有领先性能的半导体产品。其中,一款高性能的芯片产品因其卓越的功耗控制和计算能力,在行业内引起了广泛关注。这款产品不仅帮助Elite打开了市场,也为公司后续的技术创新奠定了坚实的基础。

Dymec公司的发展小趣事

随着全球对环保问题的日益关注,Dymec公司也积极响应号召,开始推动绿色环保的转型。公司投入大量资金研发环保型电子连接器产品,采用环保材料和生产工艺,减少了对环境的污染。这一转型不仅提升了公司的社会责任感,也为公司赢得了更多客户的青睐。

问答坊 | AI 解惑

研究下驱动步进电机软硬件类型和方法-大赛必备知识

本帖最后由 paulhyde 于 2014-9-15 09:42 编辑 步进电机在控制类系统中使用非常广泛,我设计过步进电机在工业系统中的应用有三次,一次是关于线切割铣床上工件移动的设计,一次是关于超声波小径管无损探伤驱动小径管旋转和探头水平移动的设计,还 ...…

查看全部问答>

如何用译码器实现对多电机的控制?

大家好,本人新手,希望得到大家的帮助! 我想使用C51单片机连接一个74HC154译码器,进而实现对多个步进电机的控制,我想问的是这能否实现?如果不能实现,我该怎样才能做到用单片机控制多个电机呢? 非常感谢! 简单地说,怎样实现用单片机控制 ...…

查看全部问答>

msp430串口收发程序

现在想用msp430的串口进行收发程序开发,但不知道对方一次发送过来多少数据?如何才能完整接收呢?我感觉使用中断的方式一次只能接收一个字节的数据,不能把对方发送的完整数据全部接收!请问有什么解决办法?谢谢! 另外,使用串口通信,一方是ms ...…

查看全部问答>

wince下读写IC卡速度问题

在pc下测试,串口读写只要3s 在wince下测试,居然10s啊,怎么解决?? 怎么办 ?? 救命 …

查看全部问答>

有一套串口通信协议需要分析破解,寻求达人帮助

有一套串口通信协议需要分析破解,寻求达人帮助! 谢谢! to:hawking20001981(东东VC++Primer) 请速和我联系! QQ:652650436…

查看全部问答>

在VMware上运行VxWorks遭遇"Error loading file! 0xd0003",已经困扰几天了

【环境】PC、XP、Tornado2.2、VMWare、虚拟软驱RamDiskNT、虚拟网卡为AMD的PC-NET,按要求从AMD的网站上下载的最新驱程 【实施】严格按照网上的《嵌入式实时操作系统VxWorks入门》一文搭建;     VMware Network Adapter VMnet1和VMwar ...…

查看全部问答>

LED显示屏一般性故障诊断常见问题解答

replyreload += \',\' + 704935;Timson,如果您要查看本帖隐藏内容请回复…

查看全部问答>

RealViewMDK一项功能,节约STM32芯片32%的CODE使用量

   安装了MDK3.23版本之后,在keilarmoardsembeststm32v100开发板例程中,使用Blinky的例程,该例程含有LCD显示,ADC,USART,GPIO,NVIC等功能,在C/C++选项中使用三级优化-o3选项后编译结果:Code=7764,RO-data=468,RW-data ...…

查看全部问答>

新手求解答 AD软件中 DB9的原理图后面怎么会有两条线

AD软件中 DB9的原理图后面怎么会有两条线 如图所示正常DB9不是没有吗 怎么去掉??新手求解答…

查看全部问答>

基于STM32和STM8的医疗电子方案

基于STM32和STM8的医疗电子方案,PPT格式,简单介绍了基于stm32的电图机(ECG)  、指甲式脉搏血氧仪、多参数监护仪、B超 、胎心仪、注射泵、输液泵、生化分析仪、麻醉呼吸机,基于stm8的血糖仪以及其它医疗产品的设计…

查看全部问答>