📄 main.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 + -