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驱动器。

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

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

1#include <MSP430G2553.h> 2 3/* 4 * main.c 5 */ 6void Blink_LED(); 7int main(void) { 8 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 9 P1DIR = BIT6; 10 while(1) 11 { 12 Blink_LED(); 13 } 14} 15void Blink_LED() 16{ 17 _delay_cycles(1000000); 18 P1OUT^ = BIT6; 19}

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

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

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

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

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

1#define BIT0 (0x0001) 2#define BIT1 (0x0002) 3#define BIT2 (0x0004) 4#define BIT3 (0x0008) 5#define BIT4 (0x0010) 6#define BIT5 (0x0020) 7#define BIT6 (0x0040) 8#define BIT7 (0x0080) 9#define BIT8 (0x0100) 10#define BIT9 (0x0200) 11#define BITA (0x0400) 12#define BITB (0x0800) 13#define BITC (0x1000) 14#define BITD (0x2000) 15#define BITE (0x4000) 16#define BITF (0x8000)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

​一篇文章总结一下Python库中关于时间的常见操作

前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在

Golang 有趣的ICON收集