- /**********************************************************************
- *
- * 实验名称:GPIO位带操作
- * 实验平台:NV32开发板
- * 板载芯片:NV32F101FL64E
- * 实验效果:通BOS位操作,实现GPIO寄存器的位操作。 不仅降低了总线占有率和CPU
- * 执行时间,还节省代码空间
- *
- ************************************************************************/
- #include "common.h"
- #include "systick.h"
- #include "bos.h"
- #include "gpio.h"
- #include "delay.h"
- #include "sysinit.h"
- #include "start.h"
- #define LED0_OFF PTE7_OUT_HIGH //PE7输出为高电平
- #define LED0_ON PTE7_OUT_LOW //PE7输出为低电平
- #define LED1_OFF PTH1_OUT_HIGH
- #define LED1_ON PTH1_OUT_LOW
- #define LED2_OFF PTH2_OUT_HIGH
- #define LED2_ON PTH2_OUT_LOW
- int main (void);
- int main (void)
- {
- uint32_t velua;
-
- sysinit();
- DelayInit(); //延时初始化
- BOS_BIT_SET(&GPIOB->PDDR,7); //设置PE7引脚为输出
-
- BOS_BIT_SET(&GPIOB->PDDR,25); //设置PH1引脚为输出
-
- BOS_BIT_SET(&GPIOB->PDDR,26); //设置PH2引脚为输出
-
- BOS_BIT_CLEAR(&GPIOA->PDDR,1); //设置PA1引脚为输入
- BOS_BIT_CLEAR(&GPIOA->PIDR,1);
- BOS_BIT_SET(&PORT->PUEL ,1); //端口PA1使能上拉
- velua=PTA1_IN; //读取PA1端口输入
- printf("PA1=%X.\r\n",velua);
-
- while(1)
- {
- DelayMs(1000);
- LED0_OFF;
- DelayMs(1000);
- LED1_OFF;
- DelayMs(1000);
- LED2_OFF;
- DelayMs(1000);
- LED2_ON;
- DelayMs(1000);
- LED1_ON;
- DelayMs(1000);
- LED0_ON;
- DelayMs(1000);
- LED0_ON;
- LED1_ON;
- LED2_ON;
- DelayMs(1000);
- LED0_ON;
- LED1_ON;
- LED2_ON;
- }
- }
- /********************************************************************/
|