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

2019-04-15 14:01发布

摘自: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) 这里附上相应的数据手册部分:
使用C语言赋值则使用如下语句即可: #include main() { PORTA=0xff; }
然而我们发现用该代码在MPLAB IDE中build之后逐步运行,发现PORTA寄存器的值没有任何改变,一直是0x00000000。
接下来我们查询数据手册中关于PortA的部分 。。。