微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > NEC V850 之 通用输入输出I/O口

NEC V850 之 通用输入输出I/O口

时间:12-03 来源:互联网 点击:
编译环境: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,新的平台新的梦想。下面上图:

还有需要注意到的是,如果要更换芯片的类型,要在main.h头文件里进行更改包含文件,并且修改option里的芯片型号。因为工程需要调用不同文件夹里的头文件,所以要在option里设置包含路径,在IAR里比在MDK里麻烦一些,如果移动工程需要更改,设置位置见下图:

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top