正在学PIC32MZ,自己做了个开发板,可以查看
https://bbs.eeworld.com.cn/thread-450429-1-1.html相关内容。我每天晚上都会抽时间学PIC32相关内容,尽量在写清楚贴在这里供大家一起学习。
20141105写的第一章:
**************************************************************************************
一, PICM32Z的I/O配置与使用
1,所有IO上电默认为输入模式。如果是ADC口,则默认为ADC输入口;
目的:安全性,不用的I/O口,实际应用时要10K下拉电阻接地为佳。
2,所有IO基本上由8个寄存器控制
2.1 TRISX--------方向寄存器 例:TRISA=0X000F;
目的:设置IO的方向,是输入还是输出?
2.2 PORTX------端口寄存器 例:PORTB=0XFF0F;
目的:控制硬件的实际PIN脚位,输入数据用
2.3 LATX---------锁存器 例:LATD=0XF000;
目的:锁存数据,刷新PORTX口 输出数据用
2.4 AD1PCFG------ADC或数字IO选择 //例:AD1PCFG=0xFFFF; //0为ADC,1为数字I/O口
2.5 CLR------清0寄存器 //位操作 例:TRISBCLR|= (1<< 7);
2.6 SET------置1寄存器 //位操作 例:PORTBSET|= (1<< 0);
2.7 INV------翻转寄存器(位取反) //位操作 例:LATAINV|=(1<<2);
目的:高速的位控制指令,相当8位机的RC0=1,RD1=~RD1;
与TRISX,PORTX,LATX,AD1PCFG相结合,进行各种位控制。
2.8 ODCXX-------漏极开路或数字OI输出。 例:ODCC0=1; //当RC0输出漏极开路
目的:置1漏极开路,为适应外部5V供电的信号,要外接上拉电阻
***************************************************************************************************
//下面软件环境使用HT-PICC32与IDE8.8编写测试通过。
void main()
{
DDPCONbits.JTAGEN = 0; //如果用ICSP串口(ICD2,KIT2),要关闭JTAGEN功能,肆放RA部分端口
AD1PCFG=0xFFFF; //将RB口全设为数字IO口,手册有AD1PCFG的PCFG3位,位是不能PCFG3=1或PCFG3=0;这样操作。
AD1PCFGCLR|=(1 << 3);//将RB3设为ADC模拟输入
PORTB=0XFF0F; //PORTB端口输出0XFF0F电平
PORTBSET|=(1 << 7);//RB7位置1
PORTB=0XFF0F;//PORTB端口输出0XFF0F电平
ODCASET|=(1<<0);//RB7位置1
LATB=0X0000;//对B口锁存器写入数据
LATBCLR|=(1 << 0)|(1 << 1)|(1 << 2);//位置1 (1<<0)//对B口锁存器的指定位进行清0
ODCB=0X0000;//RB口全部为数字I/O口;手册有ODCB的ODCB0位,位是不能ODCB0=1或ODCB0=0;这样操作。
ODCBSET|=(1<<0);//RB0口为漏极开路输出
TRISB=0X0000; //RB口全为输出
TRISBSET|=(1 << 2);//RB2为输入
while(1)
{
LATBINV|=(1<<0);//对RB0进行翻转
}
}
*******************************************************************************************
进行软件单步仿真时,RB0是在不断的进行翻转0-1-0-1-0-1-0-1-0.。。。。。。。。。。
第一章总结:
1。 查阅PIC32的数据手册 2. 网上前辈例题结合手册分析, 3。加上IDE的编译编程运行和仿真,4 开发板实际运行脱机运行。