⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Ctoex内核的LM3S1138的例子
💻 C
字号:
// 基于《Stellaris外设驱动库》的SysCtl例程: 通过外部VIN1与VIN2电压进行比较,通过比较的结果来控制LED1状态
   
   
#include "hw_memmap.h"
#include "hw_types.h"
#include "gpio.h"
#include "sysctl.h"
#include "systick.h"
#include "comp.h"
#include  "LED.H"

 
#define VIN1   GPIO_PIN_4                                                /*  PB4为VIN1                   */
#define VIN2   GPIO_PIN_6                                                /*  PB6为连接VIN2               */
#define VOUT   GPIO_PIN_4                                                /*  PF4为VOUT                   */


//  将较长的标识符定义成较短的形式
#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端口
}

/*********************************************************************************************************
** Function name:    main
** Descriptions:     通过外部VIN1与VIN2电压进行比较,通过比较的结果来控制LED1的状态
** input parameters: 无
** output parameters:无
** Returns value:    0:失败
*********************************************************************************************************/
int main(void)
{   
    JTAG_Wait();
    LED_Init(LED1);
    
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOB);                               /*  使能GPIO PB口               */
    SysCtlPeriEnable(SYSCTL_PERIPH_COMP0);                               /*  使能模拟比较器0             */
    SysCtlPeriEnable(SYSCTL_PERIPH_GPIOF);
    

    GPIOPinTypeComparator(GPIO_PORTB_BASE, VIN1 | VIN2);                 /*  设置 PB4和PB6为比较器的输入端
                                                                                                        */
    GPIODirModeSet(GPIO_PORTF_BASE,VOUT,GPIO_DIR_MODE_HW);               /*  PF4第二功能为模拟比较器0输出*/           
    GPIOPadConfigSet(GPIO_PORTF_BASE, VOUT,GPIO_STRENGTH_2MA,            /*  设置为2mA驱动和推挽使能     */ 
                     GPIO_PIN_TYPE_STD);
                                                                         /*  配置模拟比较器:无ADC触发;
                                                                            和C0+进行比较;比较器的同相输出                                                                                                   */
    ComparatorConfigure(COMP_BASE, 0, ( COMP_TRIG_NONE | COMP_ASRCP_PIN0 |
                                      COMP_OUTPUT_NORMAL));
    
    while (1)
    {
        if (ComparatorValueGet(COMP_BASE, 0) == 1 )                    /*  读取比较结果. 1:点亮LED1;
                      
                                                                           0: 熄灭LED1                */
         LED_On(LED1);                                                 /*  点亮LED1                   */
          
        else
         
         LED_Off(LED1);                                                /*  熄灭LED2                    */
        
    }
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -