原创 Cortex-M0修行心得-1

2011-2-18 17:53 6266 8 11 分类: MCU/ 嵌入式

大半年前去ZLG公司办事。偶然间得知ZLG的Cortex-M0开发板免费赠送,于是也申请了个。后来因为忙一直没时间研究,最近手头事不多加上EDN开展M0助学活动。因为偶决定痛下决心开始研究M0。在此将学习心得与大家交流


初始M0,M0是针对低端单片机市场的。其竞争对手是传统的51,AVR,PIC,MSP430单片机。高端ARM并不是M0能够匹敌的。据我所知最先面试的M0芯片是NXP的LPC1100系列。ZLG的M0板采用的就是LPC1114.上图:bc1232b3-5a4c-40e5-bebd-f00602b6708b.jpg 看到了吧,板子是异常的小啊。从内心情感上来说这个板子确实用的不那么舒心。除了有USB调试外。没有任何外围的扩展。实验起来很麻烦。做个LED还得另外焊个板子用杜邦线来连...杯具啊。。。


在来看看开发环境。我使用的是ZLG公司提供的TKStduio平台,个人是非常喜欢着个软件的。它通过工具链将各种开发软件都集成到一个软件中,不需要在keil啊 ADS .等软件间进行切换。所有的开发环境都类似,加快了软件的熟悉磨合时间。在就是软件非常有特色的显示效果。真的是看上去就喜欢。上图:e958ae5f-aecb-4e1f-9d08-18bd407fa6d1.jpg。不仅如此软件上还加入了许多实际的小工具。例如ASCII工具栏:6324809c-fa40-4879-ac93-1a5169330775.jpg81e72b58-a7a5-408a-8f3a-21f2792aaad3.jpg还有增加型的串口工具和KFLASH工具。。。这些还是非常实用滴...哈哈..


说完了软硬件开发环境,在来介绍哈今天的M0芯片。板上用的是LPC1114 LQFP48脚封装的啊,有42个IO口。这些IO口比较特别,每个IO口都可以设置为中断。除了外部中断多外,片上还集成了ADC,SSP,I2C,RS485,Timer,PMU这些单元。对了还有8K的RAM和32K的ROM。终合来说还是很有竞争力的。因为这款芯片的零售价格只要13元喔。


首先来介绍哈GPIO ,M0的GPIO寄存器很少喔。常用的是GPIOXDATA,GPIOXDIR(X代表4组IO口)。看上去是不是很熟悉咧。和AVR的IO操作很类似吧。拿第一个最简单的例子来说点亮第一个LED。只需要这两句话就可以了。GPIO1DIR=0X02;//设置P1_1为输出。GPIO1DATA=0XFD;//设置P1_1为低就可以点灯了。就这么简单...呵呵...简单的原因是因为ZLG已经提供了完整的启动代码和初始化程序。所以在这些基础上还是非常简单的。


第一天的M0使用还是非常顺利的。因为简单嘛....初学M0难免遇到很多问题...还希望能结识更多的M友..大家一起讨论...


特附上源代码和工程文件(基于TKStduio环境attachment download)....


*********************************************************************************************************/
#include "..\config.h"


/*********************************************************************************************************
  宏定义
*********************************************************************************************************/
#define BEEP        (1ul << 7)
#define BEEP_INIT()  GPIO2DIR  |=  BEEP                                 /*  蜂鸣器初始化                */
#define BEEPOFF()    GPIO2DATA |=  BEEP                                 /*  蜂鸣器关                    */
#define BEEPON()     GPIO2DATA &= ~BEEP                                 /*  蜂鸣器开                    */
 
/*********************************************************************************************************
** Function name:       myDelay
** Descriptions:        软件延时
** input parameters:    无
** output parameters:   无
** Returned value:      无
*********************************************************************************************************/
void myDelay (INT32U ulTime)
{
    INT32U i;
   
    i = 0;
    while (ulTime--) {
        for (i = 0; i < 5000; i++);
    }
}


/*********************************************************************************************************
** Function name:       main
** Descriptions:        BEEP测试程序,短接P2.7与BEEP(基于EasyCortexM3-1300开发板)
** input parameters:    无
** output parameters:   无
** Returned value:      无


用到的寄存器是GPIOXDATA
   GPIOXDIR
*********************************************************************************************************/
int main (void)
{
    targetInit();                                                       /*  初始化目标板,切勿删除      */
    pinInit();                                                          /*  引脚初始化                  */


    SYSAHBCLKCTRL |= (1ul << 6);                                        /*  使能GPIO模块时钟            */
 GPIO0DIR=1<<1;//设置P0.1为IO口
 GPIO0DATA=0XFD;//将P0.1设置为低点亮LED
    while (1)
 { 
  //LED闪烁
       GPIO0DATA=0XFD;//将P0.1设置为低点亮LED
    myDelay(400);
    GPIO0DATA=0XFf;//将P0.1设置为高熄灭LED
    myDelay(400);
    }
}


/*********************************************************************************************************
  End File


 

文章评论3条评论)

登录后参与讨论

用户377235 2013-12-20 20:09

正好初学这个,有个很简单的问题想请教一下, #define BEEP (1ul << 7) 这句语句是什么意思呢?为什么是将BEEP定义为PIO2_7?

用户1002649 2012-9-6 15:24

写得还不错~~支持下~~

用户120337 2011-2-18 20:17

呵呵,管脚没几个,外围功能没几项(不是相对51而言的),寄存器也就不需要几个了。
相关推荐阅读
用户284699 2011-03-31 18:32
新塘Cortex-M0武汉站培训见闻感受
今天受供应商邀请去参加了新塘在理工大举办的M0培训。以下分享一下今天的见闻感受。为了不迟到,今天特地起个早去参加培训,原本8:30到9:00的报道时间,当我8:30到的时候已经发现来了很多学生。竟然已...
用户284699 2011-03-16 12:57
致敬315-电子打假那些事
昨天回家看了央视的315晚会。感觉是甚为给力啊!今天抱着务必敬仰的心情揭露一些身边的电子忽悠事件。还望各位网友也能分享自己经历的那些忽悠事。 事件1:记得那时我还在读初中,当时我天天中午回家看CCTV...
用户284699 2011-03-16 10:51
初入维修部-拆解UPS及大吉手台充电器
最近工作好忙,很长时间没写博客。加上公司维修的老师傅退休了。所以我也被临时安排到维修部。俗话说:“一个好的开发人员首先一定是好的维修人员”。带着无比崇敬的心情我来到了维修部。先上图介绍哈工作环境   ...
用户284699 2011-02-24 13:41
Cortex-M0修行心得-3
 M0的看门狗和普通51单片机的看门狗类似。比较简单。在配置完看门狗寄存器后看门狗模块就会随程序一直执行不能关闭。唯一关闭的方法就是系统发生复位。狗狗工作标记位就会由硬件自动清零而不工作了。在对看门狗...
用户284699 2011-02-22 09:03
Cortex-M0修行心得-2
M0的中断系统-M0的外部中断是所有的IO口都可以实现的,这一点比较特殊。今天试了试LPC1114的外部中断功能,本以为很简单的问题还遇到了麻烦,问题如下,根据ZLG提供的工程例子将程序烧写可以正常运...
我要评论
3
8
关闭 站长推荐上一条 /2 下一条