原创 PIC32入门学习 之IO口输出操作

2014-4-1 23:21 2615 6 6 分类: MCU/ 嵌入式

 

PIC32入门学习

之IO口输出操作

  • 学习的目的

使用PIC32MX795L单片机IO口引脚输出高电平点亮四个LED灯。

  • 电路图如下

 

333.jpg

其中LED2 LED3用到的IO是TMS/RA0 TCK/RA1与JTAG的引脚相同。在PIC32启动的时候是默认启动JTAG的。所以在使用TMS/RA0 TCK/RA1端口的时候,先要把JTAG功能禁止。我使用的是PICKit3。

  • 需要使用到的函数

void PLIB_PORTS_PinDirectionOutputSet(

PORTS_MODULE_ID index,

PORTS_CHANNEL channel,

PORTS_BIT_POS bitPos

  •  

这个函数设置IO为输出模式

  • : 这个我不知道是起到什么作用的,可以参考下

Identifier for the device instance to be configured的意思。

  • :选择相应的port端口
  • :选择相应的PIN引脚。

void PLIB_PORTS_PinSet(

PORTS_MODULE_ID index,

PORTS_CHANNEL channel,

PORTS_BIT_POS bitPos

  •  

功能描述:将相应的IO端口位置1

  • :同上
  • :同上
  • :同上

搞不懂的microchip把这些底层的程序,都屏蔽掉了,看不到具体的程序的内容。

  • 学习PIC32需要看的一些资料
  • 由于这些资料不好一一上传,需要的可以通过下面加入QQ群,向我索要,希望你的加入。

IO Ports(第12章)_61120E

配置_32

振荡器的配置(第六章)_61112H

  1. 系列数据手册

对于IO口的操作Help_harmony_v0_70_01b只需要看5.6.17Ports Peripheral Library

这一章就可以了。

    这些相应的资料我会通过附件上传。

  • 配置位的学习

5.1配置位的程序如下

// Enable the below section if you are using PIC32MZ devices

#pragma config FSRSSEL = PRIORITY_0  // SRS Select (SRS Priority 0)

#pragma config FMIIEN = OFF           // Ethernet RMII/MII Enable (RMII Enabled)

#pragma config FETHIO = ON            // Ethernet I/O Pin Select (Default Ethernet I/O)

#pragma config FCANIO = ON            // CAN I/O Pin Select (Default CAN I/O)

#pragma config FUSBIDIO = OFF        // USB USID Selection (Controlled by Port Function)

#pragma config FVBUSONIO = OFF   // USB VBUS ON Selection (Controlled by Port Function)

// DEVCFG2

#pragma config FPLLIDIV = DIV_2         //3 System PLL Input Divider (1x Divider)

#pragma config FPLLMUL = MUL_15         // PLL Multiplier (24x Multiplier) ?

#pragma config UPLLIDIV = DIV_12        // USB PLL Input Divider (12x Divider) ?

#pragma config UPLLEN   = OFF           // USB PLL Enable (USB PLL is enabled)

#pragma config FPLLODIV = DIV_2         //DIV_2

// DEVCFG1

#pragma config FNOSC = PRIPLL         // Oscillator Selection Bits (Primary Osc w/PLL (XT+,HS+,EC+PLL)) ?

#pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable (Disable SOSC)

#pragma config IESO     = OFF               // Internal/External Switch Over (Disabled)

#pragma config POSCMOD  = HS           // Primary Oscillator Configuration (Primary osc enabled)

#pragma config OSCIOFNC = OFF           // CLKO Output Signal Active on the OSCO Pin (Disabled)

#pragma config FPBDIV = DIV_1        // Peripheral Clock Divisor (Pb_Clk is Sys_Clk/1) ?

#pragma config FCKSM    = CSDCMD  // Clock Switching and Monitor Selection (Clock Switch Enabled, FSCM Enabled)

#pragma config WDTPS    = PS1048576         // Watchdog Timer Postscaler (1:1048576)

#pragma config FWDTEN   = OFF             // Watchdog Timer Enable (WDT Disabled)

// DEVCFG0

#pragma config ICESEL   = ICS_PGx1          //#pragma config JTAGEN   = OFF

#pragma config DEBUG    = OFF

#pragma config PWP = OFF                    // Program Flash Write Protect (Disable)

#pragma config BWP = OFF             // Boot Flash Write Protect bit (Protection Disabled)

#pragma config CP = OFF

//End of configuration bits settings

5.2配置位的分析

配置位是直接用MPLAB X IDE直接配置生成的。具体配置具体的内容参考

PIC32MX5XX_6XX_7XX系列数据手册的28.1 配置位章节。

  • 程序分析
  • 口的初始化

LED_GPIO_init() ;

这个函数主要是把LED用到的IO口设置为输出。PIC32设置为输出,默认是输出高电平的。

需要注意一点的是  

DDPCON = 0x00 ;

  • 禁止JTAG的引脚要把JTAG的功能给屏蔽掉,不然就不能操作IO口了,这个问题整了我一天。最后发现,在PIC32启动的时候,默认的是JTAG功能是打开的。

打开led灯

  1.  

就可以了。

具体的打开关闭LED程序如下。在led.h文件中。

#define ON                    1

#define OFF                   0

 

 

#define LED1(a)    if (a)       \                                        PLIB_PORTS_PinSet(LED_PORTS_INSTANCE,LED1_CHANEL,LED1_PINNUM) ;\

else         \

PLIB_PORTS_PinClear(LED_PORTS_INSTANCE,LED1_CHANEL,LED1_PINNU)

#define LED2(a)    if (a)       \                   

PLIB_PORTS_PinSet(LED_PORTS_INSTANCE,LED2_CHANEL,LED2_PINNUM) ;\

else         \

PLIB_PORTS_PinClear(LED_PORTS_INSTANCE,LED2_CHANEL,LED2_PINNUM)

 

#define LED3(a)    if (a)       \     

PLIB_PORTS_PinSet(LED_PORTS_INSTANCE,LED3_CHANEL,LED3_PINNUM);\

else         \            

PLIB_PORTS_PinClear(LED_PORTS_INSTANCE,LED3_CHANEL,LED3_PINNUM)

 

#define LED4(a)    if (a)       \     

PLIB_PORTS_PinSet(LED_PORTS_INSTANCE,LED4_CHANEL,LED4_PINNUM);\

else         \            

PLIB_PORTS_PinClear(LED_PORTS_INSTANCE,LED4_CHANEL,LED4_PINNUM)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

大家还有什么意见,请具体的提出,好让这个资料变得更详细,帮助更多的人。

 

 

 

 

 

 

 

有需要使用到相应的元件,需要样品,需要技术支持,需要合适的技术解决方案,需要PIC32开发板的,请使用下面的联系方式咨询我们。

 

 

位元电子(上海)有限公司2004年成立于上海,为大陆地区客户提供专业的解决方案,取得多家知名元器件在中国地区的授权代理。公司主要代理产品有:Microchip全系列产品、Bourns精密电位器、自恢覆保险丝及保护器件、Niko-Sem半导体、华豫宁读卡器模块等。公司在上海、深圳、北京、厦门、温州、珠海、东莞、南京、苏州、重庆、成都、武汉、杭州等地区均设有分公司及办事处。

  公司销售代表搭专业应用工程师团队,基于客户立场考虑市场面及技术面为客户提高最佳解决方案,降低成本,提升竞争力,尤其在汽车电子、计算机外设、电机控制,健身器材等诸多领域成功地为百来家客户,提供了完整的解决方案和技术支持,深得客户信赖与好评。

 

本公司主要代理有以下产品线

Microchip

8-bit/16-bit/32-bit MCU,

EEPROM.Analog,HCS200/300

 

BOURNS

TBU,Trimpot,Multifuse,

TISP,GDT,ESD Protection

 

Neoway(有方)

GPRS,GPS,CDMA2000,

WCDMA,WiFi,Zigbee

 

Leadtrend(通嘉科技)

AC-DC/DC-DC Products

 

PERICOM

Cystals.Oscillators.

Interface Logic.Pcie Switch & Bridge.

Redriver signal Switch.Video Decoder

 

NIKO-SEM

LDO,MOSFET,PWMIC

 

Byron.huang

 ---------------------------------------------

 位元电子(上海)有限公司南京办事处

 ADD:南京秦淮去洪武路359号福鑫大厦2712东

 Tel:+86-25-86895711 

 Fax:+86-25-86895712

 QQ群: 115728830

 E-mail:byron.huang@a-bit.com.cn

 HTTP://www.a-bit.com.cn

----------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条