zoukankan      html  css  js  c++  java
  • MSP430G2系列学习笔记

      今天晚上开始学习MSP430G2系列的单片机,这是一个低功耗的16位单片机,还是比较有意思的。先看了一下手册,基本的架构,感觉挺无聊的,就直接上手老师介绍的那本书开始学习了。

    第一天

    第一章主要讲的是口袋实验版的硬件结构,学到了一些有趣的知识。比如说,之前以为在对运放供电的时候,双电源供电方式中的负电源很好实现。其实不然,这里面还是有很大的学问的。下面就是产生负电源的一种方式,电荷泵原理:

    原理比较易懂,现在就来介绍下,当$Q_1$和$Q_3$ MOS管打开的时候,电源$V_1$给电容$C$充电,1 3与2 4开关的状态必定是相反的,因此当$Q_2,Q_4$打开的时候电容$C$给电容$C_F$充电,导致电容的极板是下正上负,所以输出的电源就是负电源了。(负电源的资料明天看老师给的资料)

      我们用的这个型号的板子封装是20引脚的,感觉和51的没啥优势啊~还好,在拓展板上提供了I2C芯片拓展了IO口的数量,整体来说,采用的是TAC6416A芯片,一共有16个引脚(芯片手册还没看。。)。板子用了四个输入(键盘),和个作为输出口用于控制 8个LED,4个作为输出口用于控制LCD驱动器。

      ADCDAC以及滤波器功放以后学的时候再详说吧。

      然后就开始了CCS编程,这个CCS。。。怎么说呢,速度确实很慢,毕竟是基于eclipse开发的,但是界面还是十分满意的。(不喜欢的可以使用IAR for MSP 430,很不错)工程怎么建的就不多说了,玩过51的都会。。。然后,就开始很坑的找错阶段,我按照书上的代码写了下面一段程序:

    #include <MSP430G2553.h>
    
    /*
     * main.c
     */
    void Blink_LED();
    int main(void) {
        WDTCTL = WDTPW + WDTHOLD;	// Stop watchdog timer
    	P1DIR = BIT6;
    	while(1)
    	{
    		Blink_LED();
    	}
    }
    void Blink_LED()
    {
    	_delay_cycles(1000000);
    	P1OUT^ = BIT6;
    }
    

      乍一看,没有啥错误,但是一Debug,出现下面的结果:

      找了半天,没发现错误,换一种方式照样可以是LED灯闪烁,但是这究竟是错在哪了呢?原因是我写代码的习惯,在赋值的时候不自觉的喜欢多打一个空格使代码看上去更整洁,错误就在这,取反符号“^”后面不能有空格,删了之后就没有错误了。=-=

      最后,看一下这个代码的含义,其实很简单,看下declaration就知道了。很简单P1OUT就是个1通道的IO口,8位的特殊功能寄存器。

    SFR_8BIT(P1OUT);                              /* Port 1 Output */
    

      怎么确定各个通道的状态呢?看下宏定义,很简单,十六位嘛,一次定义各个管脚为1就行了。(和微机外接8053类似)

    #define BIT0                   (0x0001)
    #define BIT1                   (0x0002)
    #define BIT2                   (0x0004)
    #define BIT3                   (0x0008)
    #define BIT4                   (0x0010)
    #define BIT5                   (0x0020)
    #define BIT6                   (0x0040)
    #define BIT7                   (0x0080)
    #define BIT8                   (0x0100)
    #define BIT9                   (0x0200)
    #define BITA                   (0x0400)
    #define BITB                   (0x0800)
    #define BITC                   (0x1000)
    #define BITD                   (0x2000)
    #define BITE                   (0x4000)
    #define BITF                   (0x8000)
    

      

  • 相关阅读:
    从零开始学ios开发(十二):Table Views(中)UITableViewCell定制
    从零开始学ios开发(十二):Table Views(上)
    从零开始学ios开发(十一):Tab Bars和Pickers
    从零开始学ios开发(十):Multiview Applications(多个xib之前的切换)
    从零开始学ios开发(九):Swapping Views
    从零开始学ios开发(八):Autorotation and Autosizing
    从零开始学ios开发(七):Delegate,Action Sheet, Alert
    从零开始学ios开发(六):IOS控件(3),Segmented Control、Switch
    从零开始学ios开发(五):IOS控件(2),Slider
    从零开始学ios开发(四):IOS控件(1),Image View、Text Field、Keyboard
  • 原文地址:https://www.cnblogs.com/txy19981002/p/8344080.html
Copyright © 2011-2022 走看看