日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]  Today I implement "Hello World" on PIC32MZ EC starter kit. The application of "Hello World" only lights up a LED. There are three LEDs on the starter kit board -- LED1 and LED2 and LED3. At the mo

  Today I implement "Hello World" on PIC32MZ EC starter kit. The application of "Hello World" only lights up a LED. There are three LEDs on the starter kit board -- LED1 and LED2 and LED3. At the moment, I only light LED1 on RH0.


Every PIC application has to set several configuration bits, PIC32 is no exception. So we start with configuration bits. The following is the configuration bits I set for the "Hello world" application.



// PIC32MZ2048ECH144 Configuration Bit Settings


// 'C' source line config statements


#include


// DEVCFG3  BFFFFFFF

// USERID = No Setting

#pragma config FMIIEN = ON // Ethernet RMII/MII Enable (MII Enabled) // in MII Mode, you need a 25MHz XTAL, in RMII Mode, need a 50MHz Clock.

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

#pragma config PGL1WAY = ON // Permission Group Lock One Way Configuration (Allow only one reconfiguration)

#pragma config PMDL1WAY = ON // Peripheral Module Disable Configuration (Allow only one reconfiguration)

#pragma config IOL1WAY = ON // Peripheral Pin Select Configuration (Allow only one reconfiguration)

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


// DEVCFG2  7FF9B11A

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

#pragma config FPLLRNG = RANGE_5_10_MHZ // System PLL Input Range (5-10 MHz Input)

#pragma config FPLLICLK = PLL_POSC // System PLL Input Clock Selection (POSC is input to the System PLL)

#pragma config FPLLMULT = MUL_50 // System PLL Multiplier (PLL Multiply by 50)

#pragma config FPLLODIV = DIV_2 // System PLL Output Clock Divider (2x Divider)

#pragma config UPLLFSEL = FREQ_24MHZ // USB PLL Input Frequency Selection (USB PLL input is 24 MHz)

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


// DEVCFG1  7F7F3839

#pragma config FNOSC = SPLL // Oscillator Selection Bits (System PLL)

#pragma config DMTINTV = WIN_127_128 // DMT Count Window Interval (Window/Interval value is 127/128 counter value)

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

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

#pragma config POSCMOD = EC // Primary Oscillator Configuration (External clock mode)

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

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

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

#pragma config WDTSPGM = STOP // Watchdog Timer Stop During Flash Programming (WDT stops during Flash programming)

#pragma config WINDIS = NORMAL // Watchdog Timer Window Mode (Watchdog Timer is in non-Window mode)

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

#pragma config FWDTWINSZ = WINSZ_25 // Watchdog Timer Window Size (Window size is 25%)

#pragma config DMTCNT = DMT31 // Deadman Timer Count Selection (2^31 (2147483648))

#pragma config FDMTEN = OFF // Deadman Timer Enable (Deadman Timer is disabled)


// DEVCFG0  FFFFFFF7

#pragma config DEBUG = OFF // Background Debugger Enable (Debugger is disabled)

#pragma config JTAGEN = ON // JTAG Enable (JTAG Port Enabled)

#pragma config ICESEL = ICS_PGx2 // ICE/ICD Comm Channel Select (Communicate on PGEC2/PGED2)

#pragma config TRCEN = ON // Trace Enable (Trace features in the CPU are enabled)

#pragma config BOOTISA = MIPS32 // Boot ISA Selection (Boot code and Exception code is MIPS32)

#pragma config FECCCON = OFF_UNLOCKED // Dynamic Flash ECC Configuration (ECC and Dynamic ECC are disabled (ECCCON bits are writable))

#pragma config FSLEEP = OFF // Flash Sleep Mode (Flash is powered down when the device is in Sleep mode)

#pragma config DBGPER = ALLOW_PG2 // Debug Mode CPU Access Permission (Allow CPU access to Permission Group 2 permission regions)

#pragma config EJTAGBEN = NORMAL // EJTAG Boot (Normal EJTAG functionality)


// DEVCP0

#pragma config CP = OFF // Code Protect (Protection Disabled)


// SEQ0


// DEVADC1


// DEVADC2


// DEVADC3


// DEVADC4


// DEVADC5


Please remember a configuration bit can only be programmed logic 0, the unprogrammed state is logic 1, and device configuration bits may vary according to hardware and software. An important point is that PLL must output between 350 and 700 MHz. The PLL output is 400MHz in my configuration. Anyway, above configuration words work to me till now.


  Configuration bits is set, then we will continue with main function. The main function is very simple, just toggle H0 to logic 1. But before we do that, we should change the direction of H0 to be output. For 8-bit PIC, we usually code that like below.


TRISHbits.TRISH0 = 0; // clear TRISH bit0, H0 to be output

PORTHbits.RH0 = 1; // set PORTH bit0

  But for PIC32, below code is recommended (use LATx to write IO, PORTx to read IO).


TRISHbits.TRISH0 = 0;

LATHbits.LATH0 = 0;

  Every PIC32 I/O module register has a corresponding CLR(clear), SET(set) and INV(invert) register designed to provide fast atomic bit manipulations, a value written to a SET, CLR or INV register effectively performs the implied operation, but only on the corresponding base register and only bits specified as '1' as modified. Bits specified as '0' are not modified.


  So the above implemention has alternative option


TRISHCLR = (1<<0); // TRISH bit0 clear

LATHSET = (1<<0); // LATH bit0 set '1'

It almost like


TRISH &= 0xFFFFFFFE;

LATH |= 0x00000001;

  But it performs faster and more effectively than above. So far, there is an important point not to clarify. The I/O port H0 mixes with analog feature, and the analog feature should be disabled. For this point, PIC32MZ is different than PIC32MX. On PIC32MX devices, the analog function of an I/O pin was determined by the PCFGx bit in AD1PCFG register. On PIC32MZ devices, the analog selection function has been moved into a separate register on each I/O port. Clear ANSxy (ANSELx) bit to select digital mode.


  Finally, the main code of "Hello world" is


#include


#include "ConfigurationBits.h"


//#define LED_IOCTL() TRISHbits.TRISH0 = 0

//#define LED_SETON() LATHbits.LATH0 = 1

//#define LED_OPEN() ANSELHbits.ANSH0 = 0


//#define LED_IOCTL() TRISH &= 0xFFFFFFFE

//#define LED_SETON() LATH |= 0x00000001

//#define LED_OPEN() ANSELH &= 0xFFFFFFFE


#define LED_IOCTL() TRISHCLR = (1<<0)

#define LED_SETON() LATHSET = (1<<0)

#define LED_OPEN() ANSELH &= 0xFFFFFFFE


void main()

{

LED_OPEN();

LED_IOCTL();

LED_SETON();

while (1)

{

; // do nothing

}

}


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

Microchip公司的PIC32MZ EF系列是高達(dá)250MHz的集成浮點(diǎn)單元(FPU),具有廣泛的外設(shè)和包括局域網(wǎng)(CAN)的極好的連接選擇,工作電壓2.1V到 3.6V,DSP增強(qiáng)核具有四

關(guān)鍵字: Microchip pic32mz 處理器

點(diǎn)擊上方藍(lán)字關(guān)注我哦~ 01 前言 STM32上hello world,說白了就是使用串口向PC上的上位機(jī)軟件或者串口調(diào)試助手發(fā)送字符串。 串口的使用方法百度一下就能知道了,簡單來說就是下面這樣。 uint8_t buf...

關(guān)鍵字: hello STM32

高科技產(chǎn)品已經(jīng)深入到我們的日常生活中,給我們的生活帶來各種各樣的便利,高科技設(shè)施和廠房設(shè)計、工程和施工服務(wù)的全球先鋒Exyte于2019年11月28日至30日在中國北京舉行的IC World 2019(世界集成電路大會)...

關(guān)鍵字: 2019 exyte world 世界集成電路大會

  An interrupt is an internal or external event that requires quick attention from the controller. The PIC32MZ...

關(guān)鍵字: interrupt pic32mz timer tutorial

  In my last post I implement "Key Debounce" with port polling, port polling is not very efficient....

關(guān)鍵字: pic32mz tutorial change notification

  In my older blog "PIC32MZ tutorial -- Key Debounce", I shows how to acheive key debounce with port...

關(guān)鍵字: interrupt pic32mz tutorial external

經(jīng)過千辛萬苦,今天終于完工PIC32MZ EC Starter Kit的ethernet bootloader項(xiàng)目。我將整個項(xiàng)目, 命名為PhnBootloader。它分為兩個部分。第一個部分是PC 端的host程序Ph...

關(guān)鍵字: bootloader ethernet pic32mz udp協(xié)議

  At this moment, I accomplish the interface of UART communication for PIC32MZ EC Starter Kit. This interface...

關(guān)鍵字: communication pic32mz tutorial uart

  Core Timer is a very popular feature of PIC32 since it isa piece of the MIPS M4K core itself and is common t...

關(guān)鍵字: core pic32mz timer tutorial

  The microcontroller is PIC32MZ2048ECH144 on the PIC32MZ EC Starter Kit. This microcontroller has four 32-bit...

關(guān)鍵字: pic32mz timer tutorial 32-bit
關(guān)閉