历史上的今天
今天是:2025年02月09日(星期日)
2020年02月09日 | MSP430学习笔记1---点亮第一个LED
2020-02-09 来源:eefocus
主程序
今天无意发现抽屉里有个MP430的板子,拿来研究一下。
板子型号:MP430 Launch Pad
主芯片:MSP430G2553
Launch上网查了下,有开展的意思,Pad是板子的意思,和在一起就是初学者用的板子了,正好适合我这样的新手学习呢。嘎嘎。
首先安装CSS5.3,网上找了破解文件,破解了。
通过官网,建立了第一个程序,原程序找不到了,不过和下面的类似:
1 #include 2 3 void main(void) 4 { 5 WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer 6 P1DIR |= 0x01; // Set P1.0 to output direction 7 8 for (;;) 9 { 10 volatile unsigned int i; 11 12 P1OUT ^= 0x01; // Toggle P1.0 using exclusive-OR 13 14 i = 50000; // Delay 15 do (i--); 16 while (i != 0); 17 } 一句一句学习下: 第1句:DTCTL=WDTPW+WDTHOLD 后面解释是stop watchdog Timer(停止看门狗计时器),那WDTCTL的前三个字母WDT就是watchdog Timer(看门狗定时器的缩写了)。后面的字母啥意思,打开头文件msp430x14x.h看一下,搜索WDTCTL找到如下语句: SFR_16BIT(WDTCTL); /* Watchdog Timer Control */ 后面说的很明白,WDTCTL就是Watchdog Timer Control 的缩写。新的问题来了,SFR什么意思,百度说是Special Function Register(特殊功能寄存器的意思)。哦,那这句话就是定义了一个16bit的特殊功能寄存器。可以理解为从SFR这个大箱子里划出一小块(16BIT)给一个叫WDTCTL的人用。 同样去头文件中找其他两个词语:找到的程序如下: #define WDTHOLD (0x0080) #define WDTPW (0x5A00) 百度找到句话: “这个指令设置密码(WDTPW)和停止位定时器(WDTHOLD),所有的WatchDog配置都需要在WDTPW的辅助下完成。”有了这句话就明白了剩下的了。 WDTCTL的结构如下图所示: 第2句:P1DIR |= 0x01 P1DIR字面的意思是P1 direction(也就是P1的方向,input/output?) |=是C语言中逻辑或的意思,表示有1变1。 P1DIR |= 0x01 这句话后面的解释是Set P1.0 to output direction 把P1.0口设为输出口。那很明显了, 1表示output(向外给),0表示input(向里要),这也很形象,有才能给么,哈哈。 第三句:volatile unsigned int i; 第一个单词不认识,直接百度是不稳定的意思,百科这么说:推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 简单的理解,这个变量很重要,需要每次去看原版,不能看复印的,不然容易出错。 unsigned int无符号的整数,不多说 第四句:P1OUT ^= 0x01; 后面的翻译Toggle P1.0 using exclusive-OR:用一个互斥或(也就是异或)来切换P1.0。 至此,整个程序基本解释完毕了。 把这个程序拷进板子中,红灯就闪啦,闪啦,闪啦~~ 
下一篇:msp430学习笔记之时钟
史海拾趣
|
vs.net2005+wince5.0,调用SetWindowPos(),控件无法显示 在vs.net2005+wince5.0下,MFC编程,在OnInitDialog()函数中调用SetWindowPos(),具体参数如下: wnd->SetWindowPos(&wndTop,remote_wnd_x-4,remote_wnd_y-4,IMAGE_WIDTH+9,IMAGE_HEIGHT+9,SWP_SHOWWINDOW | SWP_DRAWFR ...… 查看全部问答> |
|
废话先不多说,先上全部程序: 打点函数,用proteus仿真结果让我郁闷,都不知道错在哪。 #include #define DataPort P2 //数据端口 sbit E ...… 查看全部问答> |
|
Oops SIGSEGV: 0000 [#1] Modules linked in: embxmailbox(P) stgfb_core(P) led st7105_ks nandbm embxloopback(P) embxshell(P) mme_host(P) embxshm(P) stapi_ioctl(P) stapi_core(P) Pid : 5705, Comm: &nbs ...… 查看全部问答> |
|
错误:tExcTask :mempartfree,invalid block ,它的出现竟然与双网卡ifAddrSet(),有关?? 大家好。 我最近用82559er双网卡,有人说一开始要 ipAttach(),ifMaskSet(),ifAddrset(),分别为两个网卡进行配置, 也有人说,不能同时配置两个。 要命的是,我在数个月之前 ,用前一种方法,网络的各种功能 没有问题。 可是 最近用建了个工程, ...… 查看全部问答> |
|
我在wince5.0里来了一个中断就执行下面的语句: QueryPerformanceCounter(&uCurrentTick); RETAILMSG(IR_DEBUG_MSG,(TEXT(\"The uCurrentTick Time is:%x\\r\\n\"),uCurrentTick.QuadPart)); 为什么每次输出的值都是一样的啊?请各位好汉指点 ...… 查看全部问答> |
|
LM3S3739JTAG口锁定问题,试了网上能找到的方法都不行,我只有JLINK V8 ,SEGGER是V4.15W的。我换了一个新片子就能看到器件了,一个是将锁定的解锁,还有就是怎么设置使其不锁定?… 查看全部问答> |
|
第三章 Boot Loader现今,嵌入式系统越来越受到人们的重视。随着系统复杂程度的提高,小型化和网络化也成为嵌入式系统发展的必然趋势。如何利用现成的通信网络,安全、快捷的对各个节点单片机进行在线软件升级(ISP),成为了嵌入式系统发展的一项 ...… 查看全部问答> |




