编译环境:IAR For V850 3.81 + MiniCube2
硬件渠道:NEC V850ES/FG3 D70F3630 (D70F3377A)
硬件资源:
LED端口:P94 P10
KEY端口:P04
在运用V850的管脚做为输入输出I/O口的时分有下面几个过程:
第一步:设置端口形式寄存器(PMCn);
第二步:设置端口方向寄存器(PMn);
第三步:对端口寄存器赋值或许对端口寄存器查询取得输入值(Pn)。
下面是代码:
来自GPIO.c
void GPIO_PortInit(void)
{
PMC9L_bit.no4 = 0 ; // 设置端口为输入输出口形式
PM9L_bit.no4 = 0 ; // 设置端口为输出
PMC1_bit.no0 = 0 ; // 设置端口为输入输出口形式
PM1_bit.no0 = 0 ; // 设置端口为输出
PMC0_bit.no4 = 0 ; // 设置端口为输入输出口形式
PM0_bit.no4 = 1 ; // 设置端口为输入
}
来自 GPIO.h
#ifndef GPIO
#define GPIO 1
/* Includes ——————————————————————*/
#include
#include
/* Exported types ————————————————————*/
/* Exported constants ——————————————————–*/
/* Exported Global variables ————————————————-*/
/* Exported macro ————————————————————*/
#define LED1 (P1_bit.no0)
#define LED2 (P9L_bit.no4)
#define KEY1 (P0_bit.no4)
/* Exported functions ——————————————————- */
void GPIO_PortInit(void);
#endif /* __GPIO_H */
来自main.c
void main(void)
{
WDTM2 = 0x1F ; // 封闭看门狗定时器,进入体系先关看门狗定时器,避免体系进入反常
GPIO_PortInit();
LED1 = 0 ;
LED2 = 1 ;
while(1)
{
if(KEY1 == 0)
{
LED1 = ~LED1;
LED2 = ~LED2;
}
}
}
代码部分清楚明了,我就不再赘述。
这儿的工程形式仍是采用了曾经的方法,用一个大的工程里边包括的system文件夹和BSP文件夹。然后用main.h头文件去包括一切的BSP的子头文件。本工程取名Dream,新的渠道新的愿望。下面上图:
![](https://img.86ic.net/2020/09/37797cb592665b0046da0ee6bc454f06.jpg)
![](https://img.86ic.net/2020/09/56211885989030e5a5e24b31d19a9d62.jpg)