LM3S1138入门8,软复位

发布者:天涯拾遗最新更新时间:2016-11-01 来源: eefocus关键字:LM3S1138入门  软复位 手机看文章 扫描二维码
随时随地手机看文章
基于《Stellaris外设驱动库》的SysCtl例程:软件复位示例

掌握库函数SysCtlReset()的用法。

程序运行后,LED1和LED2交替闪烁数次,以表明正常工作了。稍后,由于执行函数SysCtlReset()而导致芯片复位重来,LED1和LED2又会交替闪烁数次。如此反复。

主函数:

//  包含必要的头文件
#include  "LED.H"
#include 
#include 
#include 
#include 
#include 
#include 


//  将较长的标识符定义成较短的形式
#define  SysCtlPeriEnable       SysCtlPeripheralEnable
#define  SysCtlPeriDisable      SysCtlPeripheralDisable
#define  GPIOPinTypeIn          GPIOPinTypeGPIOInput
#define  GPIOPinTypeOut         GPIOPinTypeGPIOOutput
#define  GPIOPinTypeOD          GPIOPinTypeGPIOOutputOD


//  定义KEY
#define  KEY_PERIPH             SYSCTL_PERIPH_GPIOG
#define  KEY_PORT               GPIO_PORTG_BASE
#define  KEY_PIN                GPIO_PIN_5


//  防止JTAG失效
void  JTAG_Wait(void)
{
    SysCtlPeriEnable(KEY_PERIPH);                               //  使能KEY所在的GPIO端口
    GPIOPinTypeIn(KEY_PORT , KEY_PIN);                          //  设置KEY所在管脚为输入

    if ( GPIOPinRead(KEY_PORT , KEY_PIN)  ==  0x00 )            //  如果复位时按下KEY,则进入
    {
        for (;;);                                               //  死循环,以等待JTAG连接
    }

    SysCtlPeriDisable(KEY_PERIPH);                              //  禁止KEY所在的GPIO端口
}


//  定义全局的系统时钟变量
unsigned long  TheSysClock  =  12000000UL;


//  延时
void  Delay(unsigned long  ulVal)
{
    while ( --ulVal  !=  0 );
}


//  主函数(程序入口)
int  main(void)
{
    int  i;

    JTAG_Wait();                                                //  防止JTAG失效,重要!

    LED_Init(LED1 | LED2);                                      //  初始化LED1和LED2
    LED_On(LED1);                                               //  点亮LED1
    LED_Off(LED2);                                              //  熄灭LED2

    for ( i = 0;  i < 6;  i++ )                                 //  使LED闪烁数次,表明已复位
    {
        LED_Toggle(LED1 | LED2);
        Delay(200 * (TheSysClock / 4000));
    }

    LED_Off(LED1 | LED2);                                       //  熄灭LED

    Delay(3500 * (TheSysClock / 4000));                         //  延迟一段时间

    SysCtlReset();                                              //  软件复位

    for (;;)                                                    //  不会执行到这里
    {
    }
}

关键字:LM3S1138入门  软复位 引用地址:LM3S1138入门8,软复位

上一篇:LM3S1138入门9,睡眠省电模式
下一篇:LM3S1138入门7,PLL(锁相环)设置系统时钟

推荐阅读最新更新时间:2024-03-16 15:18

LM3S1138入门9,睡眠省电模式
基于《Stellaris外设驱动库》的SysCtl例程:睡眠省电模式示例 在睡眠模式下,CPU和内部存储器暂停工作(所保存的数据不变),因此能够节省相当可观的功耗。 掌握以下库函数的用法: SysCtlPeriClkGat() SysCtlPeriSlpEnable() SysCtlSleep() 程序运行后,LED点亮,表示进入工作模式。 随后LED熄灭,表示已进入睡眠模式。 按KEY2键可以唤醒,LED重新点亮。 稍后,LED熄灭(睡眠),按KEY2可再次唤醒,如此反复。 主函数: #include LED.H #include hw_types.h #include hw_memmap.h #in
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved