PT32Y003 UART 复用例程
/******************************************************************************
* @example UART
* @author 应用开发团队
* @version V1.6.0
* @date 2023/12/18
* @brief 串口发送"欢迎使用PT32Y003x系列",使用其他设备向PT32Y003x MCU发送数据,MCU接收到的数据将通过串口打印出来
*
******************************************************************************
* @attention 串口特性为:波特率9600,1位停止位,无奇偶校验
* 注意:部分代码见PT32Y003x_it.c文件中UART0_Handler函数
*
* 当前的固件仅供指导, 目的是向客户提供有关其产品的编码信息,以节省他们的时间。
* 对于因此类固件的内容/或客户使用其中包含的编码信息而引起的任何索赔, * Pai-IC 不对任何直接, 间接或继发的损害负责。
*
* (C) 版权所有 Pai-IC Microelectronics
*
*****************************************************************************/
#include "PT32Y003x.h"
/**
* @brief 软件延时函数
* @param 无
* @retval 无
*/
void Software_Delay(void)
{
u8 i, j,x;
for(i=0; i<200; i++)
for(j=0; j<200; j++)
for(x=0; x<20; x++);
}
/**
* @brief 配置UART的复用引脚
* @param 无
* @retval 无
*/
void UART_GPIO_Config(void)
{
GPIO_DigitalRemapConfig(AFIOC, GPIO_Pin_7, AFIO_AF_0,DISABLE); //PD5 TX0 PC7
GPIO_DigitalRemapConfig(AFIOD, GPIO_Pin_1, AFIO_AF_0,DISABLE); //PD6 RX0 PD1
/* 配置UART管脚的复用功能 */
GPIO_DigitalRemapConfig(AFIOC, GPIO_Pin_7, AFIO_AF_3,ENABLE); //PD5 TX0 PC7
GPIO_DigitalRemapConfig(AFIOD, GPIO_Pin_1, AFIO_AF_1,ENABLE); //PD6 RX0 PD1
}
/**
* @brief 配置UART的工作模式
* @param 无
* @retval 无
*/
void UART_Mode_Config(void)
{
UART_InitTypeDef UART_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct; //定义一个NVIC_InitTypeDef类型的结构体
/*NVIC配置*/
NVIC_InitStruct.NVIC_IRQChannel = UART1_IRQn; //设置中断向量号
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; //设置是否使能中断
NVIC_InitStruct.NVIC_IRQChannelPriority = 0x00; //设置中断优先级
NVIC_Init(&NVIC_InitStruct);
UART_ITConfig(UART1,UART_IT_RXNEI,ENABLE);
/*初始化UART0*/
UART_InitStruct.UART_BaudRate = 9600;
UART_InitStruct.UART_WordLengthAndParity = UART_WordLengthAndParity_8D;
UART_InitStruct.UART_StopBitLength = UART_StopBitLength_1;
UART_InitStruct.UART_ParityMode = UART_ParityMode_Even;
UART_InitStruct.UART_Receiver=UART_Receiver_Enable;
UART_InitStruct.UART_LoopbackMode=UART_LoopbackMode_Disable;
UART_Init(UART1, &UART_InitStruct);
/*开启UART0的收发功能*/
UART_Cmd(UART1, ENABLE);
}
/**
* @brief UART驱动函数
* @param 无
* @retval 无
*/
void UART_Driver(void)
{
UART_GPIO_Config();
UART_Mode_Config();
}
extern u16 data_rx[20];
extern u8 cnt;
int main (void)
{
u8 i=0;
UART_Driver();
printf("欢迎使用PT32Y003x系列\r\n");
while(1)
{
while(cnt)
{
UART_SendData(UART1,data_rx[i++]);
if(i==cnt)
{
i=0;
cnt=0;
}
}
}
}
#ifdef USE_FULL_ASSERT
/**
* @brief Reports the name of the source file and the source line number
* where the assert_param error has occurred.
* @param file: pointer to the source file name
* @param line: assert_param error line source number
* @retval None
*/
void assert_failed(u8* file, u32 line)
{
/* User can add his own implementation to report the file name and line number,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
printf("Wrong parameters value: file %s on line %ld\r\n", file, line);
/* Infinite loop */
while (1)
{
}
}
#endif
|