基于 GPIO_demo.uvprojx 工程的 GPIO_demo.c 文件。开发板上的 D2,D3,D4 都是 Red-LED。
拷贝粘贴,与稍微改动,即可完成。
/**********************************************************************
*
* 实验名称:GPIO端口输出配置实验
* 实验平台:NV32开发板
* 板载芯片:NV32F100FL64E
* 实验效果:配置GPIO端口为输出引脚,切换端口数据输出点亮LED
*
************************************************************************/
#include "common.h"
#include "ics.h"
#include "rtc.h"
#include "uart.h"
#include "gpio.h"
#include "sysinit.h"
#include "start.h"
int main (void);
void RTC_Task(void);
volatile uint32_t led_flag;
/********************************************************************/
int main (void)
{
/*系统初始化*/
sysinit();
cpu_identify();
RTC_ConfigType sRTCConfig;
RTC_ConfigType *pRTCConfig = &sRTCConfig;
printf("\nRunning the GPIO_demo project.\n");
led_flag = 0;
/* 配置RTC模块每隔1s产生一次中断*/
pRTCConfig->u16ModuloValue = 9;
pRTCConfig->bInterruptEn = RTC_INTERRUPT_ENABLE; /* 使能中断*/
pRTCConfig->bClockSource = RTC_CLKSRC_1KHZ; /*选择1KHz时钟源*/
pRTCConfig->bClockPresaler = RTC_CLK_PRESCALER_100; /*时钟分频系数100*/
RTC_SetCallback(RTC_Task);
RTC_Init(pRTCConfig);
/*初始化 PE7, PH1, PH2 为输出引脚--通过32位引脚掩码确定要初始化的引脚 */
GPIO_Init(GPIOB, GPIO_PTE7_MASK, GPIO_PinOutput);
GPIO_Init(GPIOB, GPIO_PTH1_MASK, GPIO_PinOutput);
GPIO_Init(GPIOB, GPIO_PTH2_MASK, GPIO_PinOutput);
/*初始化PE7为输出引脚--通过定义的GPIO引脚名确定要初始化的引脚*/
/* GPIO_PinInit(GPIO_PTE7, GPIO_PinOutput); */
GPIO_PinSet(GPIO_PTE7); /* 置位,灯灭 */
GPIO_PinSet(GPIO_PTH1);
GPIO_PinSet(GPIO_PTH2);
while (1);
}
/*****************************************************************************//*!
*
* [url=home.php?mod=space&uid=247401]@brief[/url] RTC回调函数
*
* @param none
*
* [url=home.php?mod=space&uid=266161]@return[/url] none
*
*****************************************************************************/
void RTC_Task(void)
{
led_flag++;
/* 切换PE7输出,闪亮LED1 */
/* 方法1.切换PE7端口数据输出————通过32位引脚掩码确定要切换输出的引脚 */
if(1==(led_flag%3)) {
GPIO_Toggle(GPIOB, GPIO_PTE7_MASK);
GPIO_PinSet(GPIO_PTH1);
GPIO_PinSet(GPIO_PTH2);
}
if(2==(led_flag%3)) {
GPIO_Toggle(GPIOB, GPIO_PTH1_MASK);
GPIO_PinSet(GPIO_PTE7);
GPIO_PinSet(GPIO_PTH2);
}
if(0==(led_flag%3)) {
GPIO_Toggle(GPIOB, GPIO_PTH2_MASK);
GPIO_PinSet(GPIO_PTE7);
GPIO_PinSet(GPIO_PTH1);
}
/* 方法2.切换PE7端口数据输出----通过定义的GPIO引脚名确定要切换输出的引脚 */
/* GPIO_PinToggle(GPIO_PTE7); */
}
/********************************************************************/
|