历史上的今天
返回首页

历史上的今天

今天是:2025年03月15日(星期六)

2020年03月15日 | PIC32MX450 串口4中断

2020-03-15 来源:eefocus

// mplab  x IDE V1.7


/*********************************************************************


 *

 *                  UART Interrupt Example   

 *

 *********************************************************************

 * FileName:        uart_interrupt.c

 * Dependencies:

 * Processor:       PIC32

 *

 * Compiler:        MPLAB XC32

 *                  MPLAB IDE

 * Company:         Microchip Technology Inc.

 *

 * Software License Agreement

 *

 * The software supplied herewith by Microchip Technology Incorporated

 * (the ?Company?) for its PIC32 Microcontroller is intended

 * and supplied to you, the Company?s customer, for use solely and

 * exclusively on Microchip PIC32 Microcontroller products.

 * The software is owned by the Company and/or its supplier, and is

 * protected under applicable copyright laws. All rights are reserved.

 * Any use in violation of the foregoing restrictions may subject the

 * user to criminal sanctions under applicable laws, as well as to

 * civil liability for the breach of the terms and conditions of this

 * license.

 *

 * THIS SOFTWARE IS PROVIDED IN AN ?AS IS? CONDITION. NO WARRANTIES,

 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED

 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,

 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR

 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.

 *

 *

 * $Id: uart_interrupt.c 9390 2008-06-16 23:43:04Z rajbhartin $

 * $Name: x.x $

 *

 **********************************************************************/



/***********************************************************************************

UART Interrupt Example README

 ***********************************************************************************

 * Objective: Become familiar with PIC32MX tool suite and understand

 *  basic UART Interrupt operations.

 *

 * Tools:

 * 1. MPLAB IDE with PIC32MX support

 * 2. C32 Compiler

 * 3. Explorer 16 Rev 4 or 5 board.

 * 4. RS-232 Cable

 * 5. A Terminal program for Windows - HyperTerminal

 *

 *

 ***********************************************************************************

 ***********************************************************************************/



#include // Peripheral Library

//#include



// *****************************************************************************

// *****************************************************************************

// Section: Configuration bits

// SYSCLK = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)

// PBCLK = 40 MHz

// Primary Osc w/PLL (XT+,HS+,EC+PLL)

// WDT OFF

// Other options are don't care

// *****************************************************************************

// *****************************************************************************

#pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF

#pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_1





//// DEVCFG3

//// USERID = No Setting

//#pragma config FSRSSEL = PRIORITY_7     // Shadow Register Set Priority Select (SRS Priority 7)

//#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 = ON            // USB USID Selection (Controlled by the USB Module)

//#pragma config FVBUSONIO = ON           // USB VBUS ON Selection (Controlled by USB Module)

//

//// DEVCFG2

//#pragma config FPLLIDIV = DIV_2         // PLL Input Divider (2x Divider)

//#pragma config FPLLMUL = MUL_20         // PLL Multiplier (20x Multiplier)

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

//#pragma config UPLLEN = OFF             // USB PLL Enable (Disabled and Bypassed)

//#pragma config FPLLODIV = DIV_1         // System PLL Output Clock Divider (PLL Divide by 1)

//

//// DEVCFG1

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

//#pragma config FSOSCEN = ON             // Secondary Oscillator Enable (Enabled)

//#pragma config IESO = ON                // Internal/External Switch Over (Enabled)

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

//#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 Disable, FSCM Disabled)

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

//#pragma config WINDIS = OFF             // Watchdog Timer Window Enable (Watchdog Timer is in Non-Window Mode)

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

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

//

//// DEVCFG0

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

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

#pragma config ICESEL = ICS_PGx1        // ICE/ICD Comm Channel Select (Communicate on PGEC1/PGED1)

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

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

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



// *****************************************************************************

// *****************************************************************************

// Section: System Macros

// *****************************************************************************

// *****************************************************************************

#define GetSystemClock()              (80000000ul)

#define GetPeripheralClock()          (GetSystemClock()/(1 << OSCCONbits.PBDIV))

#define GetInstructionClock()         (GetSystemClock())



#define DESIRED_BAUDRATE              (9600)      //The desired BaudRate





void WriteString(const char *string);



int main(void)

{



  // Configure the device for maximum performance but do not change the PBDIV

  // Given the options, this function will change the flash wait states, RAM

  // wait state and enable prefetch cache but will not change the PBDIV.

  // The PBDIV value is already set via the pragma FPBDIV option above..

  SYSTEMConfig(GetSystemClock(), SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);

  mJTAGPortEnable(DEBUG_JTAGPORT_OFF);



  INTConfigureSystem(INT_SYSTEM_CONFIG_MULT_VECTOR);

  INTEnableInterrupts();



    PPSOutput(3, RPD9, U4TX); // Set RPF5 pin as output for U2TX

    //PPSInput(4,U4RX,RPD5);

    PPSInput(4, U4RX, RPB2);

    PORTSetPinsDigitalIn(IOPORT_B, BIT_2);

  // Explorer-16 uses UART4 to connect to the PC.

  // This initialization assumes 36MHz Fpb clock. If it changes,

  // you will have to modify baud rate initializer.

  UARTConfigure(UART4, UART_ENABLE_PINS_TX_RX_ONLY);

  UARTSetFifoMode(UART4, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);

  UARTSetLineControl(UART4, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE | UART_STOP_BITS_1);

  //U4MODE = 1 << 3;

  UARTSetDataRate(UART4, GetPeripheralClock(), DESIRED_BAUDRATE);

  UARTEnable(UART4, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));



  // Configure UART4 RX Interrupt

//  INTEnable(INT_SOURCE_UART_RX(UART4) | INT_SOURCE_UART_TX(UART4), INT_ENABLED);

  INTSetVectorPriority(INT_VECTOR_UART(UART4), INT_PRIORITY_LEVEL_3);

  INTSetVectorSubPriority(INT_VECTOR_UART(UART4), INT_SUB_PRIORITY_LEVEL_0);

  INTEnable(INT_U4RX,INT_ENABLED);

//  INTEnable(INT_U4TX,INT_ENABLED);

  // configure for multi-vectored mode

  //WriteString("22");

  // Let interrupt handler do the work

  while (1)

  {

//     int data = 0;

//    if (UARTReceivedDataIsAvailable(UART4))

//    {

//      // Echo what we just received.

//      //PutCharacter(UARTGetDataByte(UART4));

//      // Clear the RX interrupt Flag

//      INTClearFlag(INT_SOURCE_UART_RX(UART4));

//    }

  }



  return 0;

}

// helper functions

void WriteString(const char *string)

{

  while (*string != '')

    {

      while (!UARTTransmitterIsReady(UART4))

        ;

推荐阅读

史海拾趣

Amveco Toroidal Power Products公司的发展小趣事

为了进一步扩大市场份额,Amveco公司积极寻求与行业内外的合作伙伴建立战略合作关系。公司与多家知名的电子设备制造商建立了长期稳定的合作关系,为其提供定制化的环形变压器解决方案。此外,公司还通过参加国际电子展会、建立海外销售网络等方式,积极开拓国际市场,实现了业务的全球化布局。

EIC [EIC discrete Semiconductors]公司的发展小趣事

在竞争激烈的电子行业中,EIC公司深知供应链管理和成本控制的重要性。公司建立了完善的供应链管理体系,与供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量的可靠性。同时,EIC还通过优化生产流程、提高生产效率等措施,不断降低生产成本,提升产品的竞争力。

Changzhou Galaxy Century Microelectronics Co.,Ltd公司的发展小趣事

随着技术实力的不断提升,银河微电开始积极拓展市场。公司深入分析市场需求,针对不同行业和领域的特点,推出了定制化的产品解决方案。同时,银河微电还加大了营销力度,通过参加行业展会、举办技术研讨会等方式,与潜在客户建立联系,推动产品销售。在市场的不断拓展中,银河微电实现了跨越式发展,市场份额逐年提升。

Azoteq公司的发展小趣事

随着触控技术的兴起,Azoteq在2004年增加了第二条产品线,以应对新兴的电容式触摸和接近感应产品市场。这一举措使得Azoteq能够紧跟市场趋势,为客户提供更多样化的产品选择。通过不断的技术创新和市场拓展,Azoteq在这一领域逐渐取得了领先地位。

Cristek Interconnects Inc公司的发展小趣事

随着市场竞争的加剧,Cristek Interconnects Inc公司意识到质量管理的重要性。于是,公司投入大量资源,建立了一套完善的质量管理体系,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把关。这种严谨的质量管理态度,使得Cristek的产品在行业中享有良好的声誉,赢得了客户的信赖。

Honeywell公司的发展小趣事

背景:霍尼韦尔公司的历史可以追溯到1885年,由发明家艾伯特·布兹在美国明尼阿波利斯创立布兹电子温度调节器公司。

发展:布兹成功研发出了一种名为“风门挡板”的装置,该装置能够自动调节室内温度,这是当时的一大技术突破。随着业务的不断发展,布兹电子温度调节器公司被统一温度控制公司收购,并在1893年更名为电子供热调节器公司。

关键事件:1898年,电子供热调节器公司被W.R. Sweatt收购,并于1916年更名为明尼阿波利斯热调节器公司。这一系列的更名和收购奠定了霍尼韦尔在恒温器领域的基础。

问答坊 | AI 解惑

硬派越野车四驱系统详解(二)

基于分时四驱的这个问题,工程师开发出不用进行两驱四驱切换的四驱系统,这就是全时四驱。它解决的根本就是在前后转动轴之间加装了中央差速器。开放式差速器最主要的作用就是能够消除车轮之间的转速差,这个在汽车诞生后不久就有了的部件,在全时四 ...…

查看全部问答>

用AT89C51做的公交车自动报站系统软件部分

公交车自动报站系统是我的论文,主要是以硬件为主,但软件编程也要写一些,由于我们学校当年单片机是选修,我没学过,而且论文课题又是学校定的,所以我现在在编程这儿卡住了,急死了,我的论文基本已经搞好了,现在就剩软件编程了,希望各位高手们可以帮我编 ...…

查看全部问答>

几篇好文献

几篇很不错的文献撒…

查看全部问答>

系统移植时如何把nand flash 芯片加入到NAND FLASH驱动?

如题,目标板 s3c2410, 64M nand flash,  在建立NAND FLASH分区、建立nand flash芯片支持后,如何把这个芯片加入到内核的nand flash 驱动中?…

查看全部问答>

pda上gps数据获取程序

那位高手有pda上gps数据获取程序(从串口读取)?  …

查看全部问答>

windows ce下如何添加对USB蓝牙设备的支持

我有个USB的蓝牙设备,要在wince下使用。在Platform Builder里选择了: Bluetooth HID Device Support -Bluetooth HID - keyboard -Bluetooth HID - Mouse Bluetooth Profiles Support -Bluetooth DUN Gateway -Bluetooth HS/HF and Audio Ga ...…

查看全部问答>

基于TI C2000系列的变频洗衣机解决方案

在注重节能环保的今天,变频概念对一般大众已经不陌生。各种变频家电包括空调、冰箱、洗衣机等等已经大量上市,今天要向大家介绍一个来自WPG友尚的变频洗衣机解决方案。何为变频?传统的交流电机使用简单,应用广泛,但是有一个缺点是只能实现恒定 ...…

查看全部问答>

求TMS570LS0432单片机的最小系统原理图

我想自己设计一个以TMS570LS0432为核心的控制器,不知哪位大神有它的最小系统原理图,包括供电模块和程序下载模块。主要是程序下载模块,如果不用LaunchPad上的仿真器该怎么来设计?需要其他什么芯片?望各位指点,非常感谢! …

查看全部问答>