MSP430F5529单片机入门学习笔记1

这篇具有很好参考价值的文章主要介绍了MSP430F5529单片机入门学习笔记1。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本笔记整理自B站教程MSP430F5529单片机学习视频汇总

基于库函数的开发—GPIO库函数

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

右边部分写错了,看的时候注意

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

基于库函数的开发—GPIO实践操作

LED交替闪烁

#include <msp430.h>
/*
 * EXP-GPIO-01.C
 *
 *  Created on: 2023年3月10日
 *      Author: ASUS
 */

#include "driverlib.h"

void main(void)
{
    //关闭看门狗
    WDT_A_hold(WDT_A_BASE);

    //设置P1.0为输出(LED1)
    GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    //设置P4.7为输出(LED2)
    GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN7);

    //设置P1.0输出高电平(LED1点亮)
    GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);

    //设置P4.7输出低电平(LED2熄灭)
    GPIO_setOutputLowOnPin(GPIO_PORT_P4, GPIO_PIN7);

    while(1)
    {
        //取反P4.7引脚的输出
        GPIO_toggleOutputOnPin(GPIO_PORT_P4, GPIO_PIN7);

        //取反P1.0引脚的输出
        GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);

        //软件延迟
        __delay_cycles(1000000);

    }
}

注意#include“driverlib.h”头文件时要注意:

  • 添加MSP430F5xx_6xx文件夹到当前工程下

MSP430F5xx_6xx文件夹是在导入的msp430ware_3_80_13_03包中找

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
  • 把上述MSP430F5xx_6xx文件夹的路径包含进来

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

按键控制LED

#include <msp430.h>
/*
 * EXP-GPIO-02.C
 *
 *  Created on: 2023年3月10日
 *      Author: ASUS
 */

#include "driverlib.h"

void main(void)
{
    //关闭看门狗
    WDT_A_hold(WDT_A_BASE);

    //设置P1.0为输出(LED1)
    GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);

    //设置P4.7为输出(LED2)
    GPIO_setAsOutputPin(GPIO_PORT_P4, GPIO_PIN7);

    //设置P1.0输出低电平(LED1熄灭)
    GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);

    //设置P4.7输出低电平(LED2熄灭)
    GPIO_setOutputLowOnPin(GPIO_PORT_P4, GPIO_PIN7);

    //设置P2.1为输入,上拉(S1)
    GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P2, GPIO_PIN1);

    //设置P1.1为输入,上拉(S2)
    GPIO_setAsInputPinWithPullUpResistor(GPIO_PORT_P1, GPIO_PIN1);

    while(1)
    {
        //没有按键按下时,为高电平;按键按下时为低电平
        if((GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1)) ||
          (GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P1, GPIO_PIN1))
              )
        {
            //软件延时,相当于是按键消抖
            __delay_cycles(5000);

            if(GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1))
            {
                //等待按键释放
                while(GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P2, GPIO_PIN1));

                //改变LED1的状态,(取反P1.0引脚的输出)
                GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0);
            }

            if(GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P1, GPIO_PIN1))
            {
                //等待按键释放
                while(GPIO_INPUT_PIN_LOW == GPIO_getInputPinValue(GPIO_PORT_P1, GPIO_PIN1));

                //改变LED1的状态,(取反P4.7引脚的输出)
                GPIO_toggleOutputOnPin(GPIO_PORT_P4, GPIO_PIN7);
            }

        }
        //软件延时
        __delay_cycles(5000);
    }

}

单个LED闪烁

#include <msp430.h>
/*
 * EXAMPLE007.C
 *
 *  Created on: 2023年3月10日
 *      Author: ASUS
 */

/**
 * main.c
 */

void main(void)
{
    unsigned i, j;

    WDTCTL = WDTPW | WDTHOLD;   //stop watchdog timer关闭看门狗

    P4DIR |= BIT7;  //p4.7方向设置为输出

    P4OUT |= BIT7;  //p4.7输出高电平,点亮LED

    P4OUT &= ~BIT7; //p4.7输出低电平,熄灭LED

    while(1)
    {
        P4OUT |= BIT7;  //p4.7输出高电平,点亮LED
        for(i = 60000; i > 0; i --)
        {
            for(j = 200; j > 0; j --)   //延时
            {
                ;
            }
        }

        P4OUT &= ~BIT7; //p4.7输出低电平,熄灭LED
        for(i = 60000; i > 0; i --)
        {
            for(j = 200; j > 0; j --)   //延时
            {
                ;
            }
        }

    }


}

时钟系统(UCS:Unified Clock System)

MSP430F5529单片机入门学习笔记1

有三个系统时钟可以选择ACLK、SMCLK、MCLK

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

VLOCLK、DCOCLK、DCOCLKDIV、REFOCLK是内部时钟源

VLOCLK受温度变化影响较大;DCOCLK、DCOCLKDIV稳定度稍微高一点;REFOCLK稳定度更高,是经过内部修整之后的

上电之后MCLK、SMCLK时钟信号默认来自DCOCLKDIV时钟源,这是DCOCLK经过2分频得到的,ACLK主要来自XT1CLK

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

MCLK时钟信号默认来自DCOCLKDIV时钟源,这题的表述可能不是很准确

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

时钟源如果来自LFXT1低频晶振,当低频晶振发生故障,不工作,系统会自动切换到REFOCLK(32768),场景2也同理,这是系统的防护机制

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

TimerA定时器基本功能

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

LED1通过定时器控制不断闪烁

/*
 * TimerA.C
 *
 *  Created on: 2023年3月11日
 *      Author: ASUS
 */

#include <msp430.h>

int main(void)
{
    //关闭看门狗
    WDTCTL = WDTPW + WDTHOLD;

    //引脚设置为输出
    P1DIR |= 0x01;

    //使能CCR0中断
    TA0CCTL0 = CCIE;

    //设置计数值
    TA0CCR0 = 50000;

    //选择时钟源,选择工作模式
    TA0CTL = TASSEL_2 + MC_1 + TACLR;

    //进入LPM0,开启全局中断
    __bis_SR_register(LPM0_bits + GIE);

    __no_operation();

}

//Timer0 A0中断服务函数
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
    //引脚P1.0的输出取反
    P1OUT ^= 0x01;
}

TimerA工作模式和中断

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

定时器控制红色LED闪烁

具体要求

MSP430F5529单片机入门学习笔记1

解题思路

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

请思考,用软件延时的方式,有利弊?文章来源地址https://www.toymoban.com/news/detail-462254.html

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

代码示例

MSP430F5529单片机入门学习笔记1
#include <msp430.h>
/*
 * TimerA_LED.C
 * 代码示例1:采用溢出中断的方式
 *  Created on: 2023年3月11日
 *      Author: ASUS
 */

int main(void)
{
    //停用看门狗
    WDTCTL = WDTPW + WDTHOLD;

    //P1.0设置为输出
    P1DIR |= BIT0;

    //设置开始计数值;16384 / 32768 = 0.5s,65535-16384
    TA0R = 65535 - 16384;

    //选择ACLK,连续计数模式,不要清除TAR
    TA0CTL = TASSEL__ACLK + MC_2 + TAIE;

    //开启中断
    _EINT();

    while(1)
    {
        __no_operation();   //调试用
    }
}

//Timer0 A1中断服务函数
#pragma vector = TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
    switch(__even_in_range(TA0IV, 14))
    {
        case 0:     //无中断
            break;
        case 2:     //CCR1中断
            break;
        case 4:     //CCR2中断
            break;
        case 6:     //CCR3中断
            break;
        case 8:     //CCR4中断
            break;
        case 10:    //CCR5中断
            break;
        case 12:    //CCR6中断
            break;
        //溢出中断
        case 14:
            TA0R = 65535 - 16384;
            P1OUT ^= BIT0;
            break;
        default:
            break;
    }
}

MSP430F5529单片机入门学习笔记1
#include <msp430.h>
/*
 * TimerA_LED2.C
 *
 *  Created on: 2023年3月11日
 *      Author: ASUS
 */

unsigned char u8_count_10ms;

int main(void)
{
    //停用看门狗
    WDTCTL = WDTPW + WDTHOLD;

    //P1.0设置为输出
    P1DIR |= BIT0;

    //使能CCR0中断
    TA0CCTL0 = CCIE;

    //设置目标计数值
    TA0CCR0 = 10000;        //10ms

    //选择SMCLK,增计数模式,清除TAR
    TA0CTL = TASSEL__SMCLK + MC_1 + TACLR;

    u8_count_10ms = 0;

    //开启中断
    _EINT();

    while(1)
    {
        __no_operation();
    }
}

//Timer0 A0中断服务函数
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{
    u8_count_10ms ++;

    if(u8_count_10ms >= 50)
    {
        P1OUT ^= BIT0;          //P1.0的输出取反
        u8_count_10ms = 0;

    }
}

MSP430F5529单片机入门学习笔记1
#include <msp430.h>
/*
 * TimerA_LED3.C
 *
 *  Created on: 2023年3月11日
 *      Author: ASUS
 */

int main(void)
{
    //停用看门狗
    WDTCTL = WDTPW + WDTHOLD;

    //P1.0设置为输出
    P1DIR |= BIT0;

    //使能CCR0中断
    TA0CCTL0 = CCIE;

    //设置目标计数值
    TA0CCR0 = 50000;                                        //500ms

    //选择SMCLK,增计数模式,清除TAR
    TA0CTL = TASSEL__SMCLK + ID__2 + MC_1 + TACLR;          //ID__2表示2分频
    TA0EX0 = TAIDEX_5;                                      //TAIDEX_5表示5分频,加起来10分频

    //开启中断
    _EINT();
    while(1)
    {
        __no_operation();
    }
}

//Timer0 A0中断服务函数
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)                        //每500ms进一次中断
{
    //P1.0的输出取反
    P1OUT ^= BIT0;
}

MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1
MSP430F5529单片机入门学习笔记1

到了这里,关于MSP430F5529单片机入门学习笔记1的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MSP430F5529学习笔记(6)——导入MSP430Ware,查看例程

    MSP430WARE下载; 目录 在线版本 下载MSP430Ware 查看例程 导入例程  离线版本 下载MSP430Ware  查看例程 导入例程 MSP430Ware里面有很多例程和库函数使用手册,我们可以查看学习。非常重要 (1) 打开CCS——view——Resource Explorer  之后我们会进入如下界面 (2)  点击MSP430——Embe

    2024年02月13日
    浏览(58)
  • MSP430F5529学习笔记(五)——串口|UART

            我们在使用MSP430的时候大家会发现插上usb线后电脑上有两个端口标识,那么在进行串口通信时选择哪个呢。其实如图所示,上面的端口是用来进行串口通信的,下面的则是用来进行程序的下载,大家在使用的时候多加分辨即可。          当然熟悉单片机操作的

    2024年02月16日
    浏览(50)
  • 【2023电赛备赛】msp430f5529学习笔记(一)

    【写在前】 本人目前是大二在读生,第一次参加电赛,准备不充分,结果熬了四天,最后成绩却不如人意。有51和32的基础,然后想立一个flag系统的学习一下主打超低功耗的msp430f5529单片机为比赛做准备(毕竟电赛限制TI的板子)。另一方面也是给电协的后继者留下一些参考的

    2024年02月11日
    浏览(50)
  • MSP430学习笔记(四)丨I2C通信(MSP430F5529驱动OLED显示屏)

    ​  笔者学习采用单片机型号为MSP430F5529,使用MSP-EXP430F5529LP开发板。 ​  笔者拥有一定的STM32基础,在学习MSP430的过程中,最开始苦于没有合适的OLED显示驱动代码,所以花了很多时间钻研。综合网上的各种代码,笔者认为江协科技的STM32课程中提供的OLED代码使用方便,

    2024年02月16日
    浏览(51)
  • 【MSP430F5529基于库函数的学习】电赛速学及小车实战

    为电赛准备学习的MSP430笔记 提示:主要跟着这个大佬学的 一张经常要看的图 时钟配置和闪烁的LED 时钟系统结构 (1)5个时钟来源 时钟系统模块具有5个时钟来源。 ① XT1CLK:低频/高频振荡器,可以使用32768Hz的手表晶振、标准晶体、谐振器或4~32MHz的外部时钟源; ② VLOCLK:

    2024年02月12日
    浏览(48)
  • MSP430F5529——中断理解

    认识低功耗模式; MSP430的中断,需要两个部分,一部分是打开中断,另外一部分是编写中断服务函数 首先我们得知道__bis_SR_register和_BIS_SR是一个玩意。查看宏定义可知  _BIS_SR()可传入的参数 然后我们查看x的值,发现里面有八个可以传入的值 我们这里只需要关系GIE就可以

    2024年02月16日
    浏览(57)
  • MSP430F5529 DriverLib 库函数学习笔记(一)时钟配置和闪烁LED

    平台:Code Composer Studio 10.3.1 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) (1)5个时钟来源         时钟系统模块具有5个时钟来源。 ① XT1CLK :低频/高频振荡器,可以使用32768Hz的手表晶振、标准晶体、谐振器或4~32MHz的外部时钟源; ② VLOCLK :内部超低功耗低频振荡

    2024年02月16日
    浏览(53)
  • 05:OLED模块【MSP430F5529】

    目录 实物图 字模取字         字模软件         取模步骤         1.设置软件         2.取模         3.输出数据  代码 type.h oledfont.h oled.h oled.c main.c 下面图片中,可以看到OLED模块的四个接口:GND,VCC,SCL,SDA GND VCC SCL SDA 接地 接电源3.3V/5V 接P3.5 接P3.6       

    2024年02月16日
    浏览(49)
  • 06:PWM与电机驱动【MSP430F5529】

    电机型号: 工作方式: 原理图以及接线: 根据官方例程,主要代码为drive.c drive.h main.c (后面好像使用的时候会有什么冲突导致1或者2通道无法正常运行,不太记得了,可以到实物上实验一下子) 下面是智能送药小车使用PWM驱动电机相关代码与注释(在实物中,均能正常运行)

    2024年02月15日
    浏览(52)
  • MSP430F5529循迹小车 2022电赛 C题

    编辑时间2022/8/21 选用材料:主控MSP430F5529、直流减速电机(带光电编码器)、TB6612电机驱动、超声波测距、灰度传感器、无线透传、OLED屏显示。 使用灰度传感器巡线,超声波检测前后车距作为位置环反馈,通过位置环调节前后车距离。 :MSP430   循迹    无线串口透

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包