4082|4

910

帖子

657

TA的资源

五彩晶圆(初级)

楼主
 

TIVA C Launchpad的初识(周计划之第二周) [复制链接]

StellarisLM4F120 LaunchPad评估套件是一款基于德州仪器ARMCortex-M4F微控制器的低成本评估平台。该评估套件的设计突出了LM4F120H5QR 微处理器 具有一个USB2.0接口和休眠模块的特性。
其中StellarisLM4F120H5QR 微处理器提供80MHz 的32位ARM Cortex-M4 浮点 CPU,该 CPU 带有可进行 100,000 次写擦循环的 256KB 闪存和许多外设,例如 1MSPS ADC、8 个 UART、4 个 SPI、4 个 I2C、USB 以及最多 27 个定时器(部分定时器最高可配置为 64 位)。
Stellaris LM4F120 LaunchPad评估套件具备BoosterPack 兼容性,两个双性 20 引脚可堆叠接头提供了多种出色的开包即用连接选项。这 40 个引脚使得您可以将针对显示屏、无线接口、传感器和其他功能的支持非常轻松地添加至您的项目,同时提供与现有MSP430 和 C2000LaunchPad 的基本兼容性。
Stellaris LM4F120 LaunchPad评估套件可提供板载仿真功能,通过板载方式提供了两个通用用户开关、一个复位开关以及电源LED 和用户可编程RGB LED,以使开发变得便捷。同时还配备了一根跳线,以便对电流进行测量。 Stellaris LM4F120 LaunchPad 支持 32 位 StellarisLM4F1xx 系列的 ARMCortex-M4F MCU,而且提供了对这个不断扩展的Stellaris MCU 系列的非常好的介绍。
Stellaris LaunchPad 包含 ARM Cortex-M4F 开发入门所需的一切:
Stellaris LM4F120 LaunchPad 评估板 (EK-LM4F120XL)
板载 Stellaris 内电路调试接口 (ICDI)
USB Micro-B 型插头至 USB-A 型插头电缆
自述文档
免费下载 EK-LM4F120XL StellarisWare

现在新出的入门开发板,几乎都是带有USB接口的MCU最小系统。这已经成为一种主流设计,最小系统配合外围周边可以实现灵活的工程开发,甚至直接嵌入在最终系统中。
将评估板与其他板子对比,发现其设计目的之一是克隆Arduino的开发模式。LM4F120XL参考了Arduino的外形尺寸,还参考了Arduino的扩展I/O模式。然而两者的区别在于:
·         LM4F120XL采用Cortex-M4处理器,存储容量、I/O特性和处理能力强过目前大多数Arduino;
·         LM4F120XL扩展引脚定义完全不同,既有排针,也有排母,其堆叠特性要好于Arduino;
·         LM4F120XL的Booster扩展板品类不算少,但数量比Arduino少,而且缺乏集成应用型扩展板如3G MODEM等;
·         LM4F120XL工作于3.3V,而非5V I/O;
·         LM4F120XL的目标板和调试器MCU是同一款处理器;
·         LM4F120XL调试器为USB复合设备:CDC(VCP/UART)+ Debugger + DFU固件更新;
·         LM4F120XL支持Debugger/Device两种USB接口供电(和EK-STM32F很像);
·         LM4F120XL采用MiniUSB插口,插拔比较费劲,尽量插拔另一端USB标准插头;
·         LM4F120XL保留了外部JTAG/SWD接口;
·         LM4F120XL采用TI自己的LDO供电IC;
·         LM4F120XL很少使用大容量电解电容,这或许和供电IC有关......
qs-rgb工程,即Launchpad自带的固件。
qs-rgb已经采用了浮点计算来计算颜色频谱,在一个三色LED上实在大材小用。其主要输出就是LED,输入是串口命令行,支持不同模式的LED闪烁及Hibernate模式。
这个三色LED的亮度实在是太亮了!在晚间简直是亮瞎眼镜。建议在超级终端中将其intensity代为较小的数值,如05。保护视力很重要。

/** main.c**/
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "inc/hw_ints.h"
#define SYS_CLOCK        50000000                   //CPU时钟频率
#define KEY GPIO_PIN_4                                //按键USE_SW1引脚宏定义
#define RED_LED  GPIO_PIN_1             //红色LED灯宏定义
#define BLUE_LED GPIO_PIN_2                //蓝色LED灯宏定义
#define GREEN_LED GPIO_PIN_3                //绿色LED灯宏定义
long key_value = 0;                //按键值
//**********************************************************************
//本工程使用PF4上的按键采用中断方法依次点亮和熄灭RGB三色LED灯(PF1,PF2,PF3)
//**********************************************************************
void main(void)
{
        int i = 0;
       long temp = 0;
        //使用外部16M晶振,使用PLL,系统时钟设为50MHz
       SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL |
                              SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
        //使能按键和LED所在的GPIO
       SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
        //初始化LED灯引脚,设置为输出
       GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE,RED_LED | BLUE_LED | GREEN_LED);
        //配置LED灯引脚:最大输出电流2mA,推拉输出
       GPIOPadConfigSet(GPIO_PORTF_BASE,RED_LED | BLUE_LED| GREEN_LED,
                                 GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD);
        //初始化按键引脚,设置为输入
       GPIOPinTypeGPIOInput(GPIO_PORTF_BASE,KEY);
        //配置按键引脚:弱上拉输入
       GPIOPadConfigSet(GPIO_PORTF_BASE,KEY,
                                        GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
        //设置GPIO中断方式:上升沿触发
       GPIOIntTypeSet(GPIO_PORTF_BASE,KEY,GPIO_RISING_EDGE);
        //使能按键引脚的GPIO中断
       GPIOPinIntEnable(GPIO_PORTF_BASE,KEY);
       IntEnable(INT_GPIOF);
       while(1)
        {
               //如果按键按下进入事件处理
               if(key_value & KEY)
               {
                        switch(i)
                        {
                        case 0://红灯翻转
                                temp =GPIOPinRead(GPIO_PORTF_BASE,RED_LED);
                               GPIOPinWrite(GPIO_PORTF_BASE,RED_LED,~temp);
                                key_value&= ~KEY;
                                i = 1;
                                break;
                        case 1://蓝灯翻转
                                temp =GPIOPinRead(GPIO_PORTF_BASE,BLUE_LED);
                               GPIOPinWrite(GPIO_PORTF_BASE,BLUE_LED,~temp);
                                key_value&= ~KEY;
                                i = 2;
                                break;
                        case 2://绿灯翻转
                                temp =GPIOPinRead(GPIO_PORTF_BASE,GREEN_LED);
                               GPIOPinWrite(GPIO_PORTF_BASE,GREEN_LED,~temp);
                                key_value&= ~KEY;
                                i = 0;
                                break;
                        }
               }
               else
               {
               }
        }
}
void KeyISR(void)
{
        //读取中断状态
       key_value = GPIOPinIntStatus(GPIO_PORTF_BASE,true);
        //清中断标志
       GPIOPinIntClear(GPIO_PORTF_BASE,key_value);
        //延时约10ms
       SysCtlDelay(10 * (SYS_CLOCK / 3000));
}


[ 本帖最后由 chen8710 于 2013-11-2 21:16 编辑 ]

合照.bmp (1.08 MB, 下载次数: 0)

合照.bmp

最新回复

楼主,这句话是什么意思 IntEnable(INT_GPIOF); INT_GPIOF这句能不能给具体解释下.  详情 回复 发表于 2013-12-5 22:37

点评

你好~我想咨询一下,为什么我用你的代码build完之后会提示.\\lab1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_tm4c123.o).~ 这是什么原因呢?  详情 回复 发表于 2013-12-3 06:09
 
点赞 关注
个人签名天下难事,必做于易;天下大事,必做于细。
与其博览群书,不如精读一本。

回复
举报

307

帖子

1

TA的资源

一粒金砂(高级)

沙发
 
哇塞,高手
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 楼主chen8710 的帖子

你好~我想咨询一下,为什么我用你的代码build完之后会提示.\lab1.axf: Error: L6218E: Undefined symbol SystemInit (referred from startup_tm4c123.o).~
这是什么原因呢?

点评

你用的芯片的内核是不是LM4F120呢,库有没有调错了,调成tm4c123的。 你试验一下TI提供的demo。它就是一样的功能。  详情 回复 发表于 2013-12-3 08:37
 
 
 

回复

910

帖子

657

TA的资源

五彩晶圆(初级)

4
 

回复 板凳lzw900420 的帖子

你用的芯片的内核是不是LM4F120呢,库有没有调错了,调成tm4c123的。
你试验一下TI提供的demo。它就是一样的功能。
 
个人签名天下难事,必做于易;天下大事,必做于细。
与其博览群书,不如精读一本。
 
 

回复

63

帖子

0

TA的资源

一粒金砂(中级)

5
 
楼主,这句话是什么意思

IntEnable(INT_GPIOF);

INT_GPIOF这句能不能给具体解释下.
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表