【PIC32学习笔记】关于如何控制PortA外围模块

摘自:32位单片机C语言编程:基于PIC32


单片机系统在系统复位或者上电之后,会在执行main()函数之前先执行一小段由MPLAB C32链接器自动插入的初始化程序,即所谓的Startup(启动)代码或者crt0代码,也称为c0代码。启动代码负责基本的内务操作,包括栈的所有重要初始化等。

首先我们的任务是激活PIC32的一个或多个输出引脚。PIC32的输入/输出(I/O)引脚也被成组地配置在模块或者端口中,其中每一组最多包含16个引脚,这些模块被依次命名为A至H。我们按照顺序最先使用PortA。 用于控制这些端口的SFR中最重要的也是最容易使用的是与模块同名的寄存器(比如PORTA)。

PORTA代表控制寄存器,PortA代表整个外围设备模块。

根据p32mx795f512l.h,我们可以找到PORTA的数据结构如下:

typedef union {
struct {
  unsigned RA0:1;
  unsigned RA1:1;
  unsigned RA2:1;
  unsigned RA3:1;
  unsigned RA4:1;
  unsigned RA5:1;
  unsigned RA6:1;
  unsigned RA7:1;
  unsigned :1;
  unsigned RA9:1;
  unsigned RA10:1;
  unsigned :3;
  unsigned RA14:1;
  unsigned RA15:1;
}; struct {
  unsigned w:32;
};
} __PORTAbits_t;

根据数据手册,如果将PORTA寄存器中的某位置设为1,那么对应的输出引脚就为逻辑高电平(3.3V),相反0则为逻辑低电平(0V)

这里附上相应的数据手册部分:

【PIC32学习笔记】关于如何控制PortA外围模块_第1张图片

使用C语言赋值则使用如下语句即可:

#include 
main()
{
    PORTA=0xff;
}

然而我们发现用该代码在MPLAB IDE中build之后逐步运行,发现PORTA寄存器的值没有任何改变,一直是0x00000000。


接下来我们查询数据手册中关于PortA的部分

。。。

你可能感兴趣的:(PIC32)