| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- /* --------------------------- (C) COPYRIGHT 2021 Fortiortech ShenZhen -----------------------------
- File Name : UART.c
- Author : Fortiortech Appliction Team
- Version : V1.0
- Date : 2021-04-11
- Description : This file contains .C file function used for Motor Control.
- ----------------------------------------------------------------------------------------------------
- All Rights Reserved
- ------------------------------------------------------------------------------------------------- */
- #include <Myproject.h>
- /**
- * @brief Uart2初始化函数
- * @param None
- * @return none
- * @author Marcel
- * @date 2022-07-13
- * @version 1.0
- * @property Public
- */
- void UART2_Init(void)
- {
- SetBit(PH_SEL , UART2EN); //P3[6]as UART2_RXD; P3[7]as UART2_TXD
- #if 0
- ClrBit(P3_OE , P36); //输入使能
- SetBit(P3_PU , P36); //上拉电阻
- SetBit(P3_OE , P37); //输出使能
- SetBit(P3_PU , P37); //上拉电阻
- #endif
- ClrBit(UT2_CR , UT2MOD1); //00-->单线制8bit 01-->8bit uart(波特率可设置)
- SetBit(UT2_CR , UT2MOD0); //10-->单线制9bit 11-->9bit uart(波特率可设置)
- ClrBit(UT2_CR , UT2SM2); //0-->单机通讯 1-->多机通讯;
- SetBit(UT2_CR , UT2REN); //0-->不允许串行输入 1-->允许串行输入,软件清0;
- ClrBit(UT2_CR , UT2TB8); //模式2/3下数据发送第9位,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址
- ClrBit(UT2_CR , UT2RB8); //模式2/3下数据接收第9位,若SM2=0,作为停止位
- ClrBit(IP3 , PSPI_UT21); //中断优先级时最低
- ClrBit(IP3 , PSPI_UT20); //中断优先级时最低
- // PSPI_UT21 = 0; //中断优先级时最低
- // PSPI_UT20 = 0;
- ClrBit(UT2_BAUD , BAUD2_SEL);//倍频使能0-->Disable 1-->Enable
- // ClrBit(UT2_BAUD , UART2CH); //UART2端口功能转移使能0:P36->RXD P37->TXD 1:P01->RXD P00->TXD
- ClrBit(UT2_BAUD , UART2IEN); //UART2中断使能0-->Disable 1-->Enable
- UT2_BAUD = 0x000c; //波特率可设置 = 24000000/(16/(1+ UT_BAUD[BAUD_SEL]))/(UT_BAUD+1)
- //9B-->9600 0x000c-->115200 0x0005-->256000
- }
- void UART1_Init(void)
- {
- SetBit(PH_SEL , UART1EN); //P0[6]as UART2_RXD; P0[5]as UART2_TXD
- #if 0
- ClrBit(P0_OE , P06); //输入使能
- SetBit(P0_PU , P06); //上拉电阻
- SetBit(P0_OE , P05); //输出使能
- SetBit(P0_PU , P05); //上拉电阻
- #endif
- UT_MOD1 = 0; //00-->单线制8bit 01-->8bit uart(波特率可设置)
- UT_MOD0 = 1; //10-->单线制9bit 11-->9bit uart(波特率可设置)
- SM2 = 0; //0-->单机通讯 1-->多机通讯;
- REN = 1; //0-->不允许串行输入 1-->允许串行输入,软件清0;
- TB8 = 0; //模式2/3下数据发送第9位,在多机通信中,可用于判断当前数据帧的数据是地址还是数据,TB8=0为数据,TB8=1为地址
- RB8 = 0; //模式2/3下数据接收第9位,若SM2=0,作为停止位
- ClrBit(IP3 , PI2C_UT11); //中断优先级时最低
- ClrBit(IP3 , PI2C_UT10); //中断优先级时最低
- ClrBit(UT_BAUD , UART_2xBAUD); //倍频使能0-->Disable 1-->Enable
- ES0 = 0; //UART1中断使能0-->Disable 1-->Enable
- UT_BAUD = 0x000c;//波特率可设置 = 24000000/(16/(1+ UT_BAUD[BAUD_SEL]))/(UT_BAUD+1)
- //9B-->9600 0x000c-->115200
- }
- void put_char(unsigned char c)
- {
- UT2_DR = c;
- while(!ReadBit(UT2_CR , UT2TI));
- ClrBit(UT2_CR , UT2TI);
- }
- void put_string(unsigned char *str)
- {
- while(*str != 0)
- {
- put_char(*str);
- str++;
- }
- }
|