📄 main.c
字号:
#include"71x_lib.h"
///////////////////////////////////////////////////////////////////////////////
#define UART0_Rx_Pin (0x0001<<8)
#define UART0_Tx_Pin (0x0001<<9)
#define UART1_Rx_Pin (0x0001<<10)
#define UART1_Tx_Pin (0x0001<<11)
////////////////////////////////////////////////////////////////////////////////
extern void Delay_NS(u32 dly)
{
u32 i;
for(;dly>0;dly--)
for(i=0;i<5000;i++);
}
/////////////////////////////////////////////////////////////////////////////////
void Init_UART0(void) //配置UART0
{
/* Init UART0 */
UART_Init(UART0);
/* Turn UART on */
UART_OnOffConfig(UART0, ENABLE);
/* Disable FIFOs */
UART_FifoConfig(UART0, DISABLE);
/* Reset the UART_RxFIFO */
UART_FifoReset(UART0 , UART_RxFIFO);
/* Reset the UART_TxFIFO */
UART_FifoReset(UART0 , UART_TxFIFO);
/* Disable Loop Back */
UART_LoopBackConfig(UART0,DISABLE);
/* Configure the UART as following:
- Baudrate = 115200 Bps
- No parity
- 8 data bits
- 1 stop bit */
UART_Config(UART0,115200,UART_NO_PARITY,UART_1_StopBits,UARTM_8D);
/* Enable Rx */
UART_RxConfig(UART0,ENABLE);
/* Config RxBufFull Enale */
UART_ItConfig(UART0,UART_RxBufFull,ENABLE);
Delay_NS(20);
}
///////////////////////////////////////////////////////////////////////////////
void Init_UART1(void) //配置UART1
{
/* Init UART1 */
UART_Init(UART1);
/* Turn UART on */
UART_OnOffConfig(UART1,ENABLE);
/* Disable FIFOs */
UART_FifoConfig (UART1, DISABLE);
/* Reset the UART_RxFIFO */
UART_FifoReset (UART1, UART_RxFIFO);
/* Reset the UART_TxFIFO */
UART_FifoReset (UART1 , UART_TxFIFO);
/* Disable Loop Back */
UART_LoopBackConfig(UART1,DISABLE);
/* Configure the UART as following:
- Baudrate = 115200 Bps
- No parity
- 8 data bits
- 1 stop bit */
UART_Config(UART1,9600,UART_NO_PARITY,UART_1_StopBits,UARTM_8D);
/* Config RxBufFull Enale */
UART_ItConfig(UART1,UART_RxBufFull,ENABLE);
/* Enable Rx */
UART_RxConfig(UART1,ENABLE);
Delay_NS(20);
}
/////////////////////////////////////////////////////////////////////////////////
void Init_Clock(void) //主时钟
{
// 使能2分频
RCCU_Div2Config(ENABLE);
RCCU_RCLKSourceConfig(RCCU_CLOCK2);
// 配置 PLL1 (*12 , /2)
RCCU_PLL1Config(RCCU_PLL1_Mul_12, RCCU_Div_2);
//选择PLL1的输出时钟作为主输入时钟
RCCU_RCLKSourceConfig(RCCU_PLL1_Output); //选择时钟源
//共三个时钟
//MCLK=RCLK主时钟
RCCU_MCLKConfig(RCCU_DEFAULT);
//PCLK2=RCLK/4
RCCU_PCLKConfig(RCCU_RCLK_4); //TIM APB2 12
//PCLK1=RCLK/2
RCCU_FCLKConfig(RCCU_RCLK_2); //串口 APB 124
Delay_NS(20);
}
/////////////////////////////////////////////////////////////////////////////////
void TIM1_Initialize(void) //溢出定时器1(100MS)
{
TIM_Init(TIM1);
TIM_PrescalerConfig(TIM1,19); //设置分频系数
}
/////////////////////////////////////////////////////////////////////////////////
void ConfigAllInterrupt(void) //中断配置
{
EIC_Init(); //初始化中断
EIC_IRQConfig(ENABLE); //使能中断开启
//定时器1的溢出时间
TIM1_Initialize();
//配置T1中断通道号
EIC_IRQChannelPriorityConfig(T1TIMI_IRQChannel,2);
EIC_IRQChannelConfig(T1TIMI_IRQChannel, ENABLE);
//配置EIC中断通道 UART1
EIC_IRQChannelPriorityConfig(UART1_IRQChannel,6);
EIC_IRQChannelConfig(UART1_IRQChannel, ENABLE);
//配置EIC中断通道 UART0
EIC_IRQChannelPriorityConfig(UART0_IRQChannel,7);
EIC_IRQChannelConfig(UART0_IRQChannel, ENABLE);
//UART0串口接收使能中断
UART_ItConfig(UART0,UART_RxBufFull,ENABLE);
//UART1串口接收使能中断
UART_ItConfig(UART1,UART_RxBufFull,ENABLE);
//TIM1溢出中断使能
TIM_ITConfig(TIM1, TIM_TO_IT, ENABLE);
//起动TIM1开始计数
TIM_CounterConfig(TIM1,TIM_START);
Delay_NS(20);
}
////////////////////////////初始化函数结束///////////////////////////////////////
void Init_SystemPort(void) //通用口初始化
{
Init_Clock();
GPIO_Config(GPIO0,UART0_Tx_Pin, GPIO_AF_PP);
GPIO_Config(GPIO0,UART0_Rx_Pin, GPIO_IN_TRI_CMOS);
GPIO_Config(GPIO0,UART1_Tx_Pin, GPIO_AF_PP);
GPIO_Config(GPIO0,UART1_Rx_Pin, GPIO_IN_TRI_CMOS);
GPIO_Config(GPIO0,(1<<6)|(1<<7),GPIO_OUT_PP);//推举输出P0.6或P0.7
GPIO_BitWrite(GPIO0,1<<6,1); //置位P0.6电平
GPIO_BitWrite(GPIO0,1<<7,1); //置位P0.7电平
Delay_NS(20);
Init_UART0(); //配置UART0
Init_UART1(); //配置UART1
}
////////////////////////////////////////////////////////////////////////////////
int main()
{
Init_SystemPort(); //初始化串口
ConfigAllInterrupt(); //配置所有中断
TIM1_Initialize(); //初始化定时器
Delay_NS(168);
while(1)
{ //空操作
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -