关于stm8l05RB的usart1串口复用A2,A3配置
来源:互联网 发布:网易邮箱数据库 编辑:程序博客网 时间:2024/05/29 18:22
#include "uart1.h"
#include "stm8l15x.h"
void Uart1_Init(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE);
SYSCFG_REMAPDeInit();
SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);
GPIO_Init(GPIOA, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);//TXD
GPIO_Init(GPIOA, GPIO_Pin_3, GPIO_Mode_In_PU_No_IT);//RXD
USART_DeInit(USART1);//复位UART1
/*
* 将UART1配置为:
* 波特率 = 115200
* 数据位 = 8
* 1位停止位
* 无校验位
* 使能接收和发送
*/
USART_Init(USART1,(u32)115200, USART_WordLength_8b, USART_StopBits_1,
USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx);
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断
//USART_ITConfig(USART1, USART_IT_TC, ENABLE);//开启接收中断
USART_Cmd(USART1, ENABLE);//使能UART2
}
/*******************************************************************************
* 名称: UART1_SendByte
* 功能: UART1发送一个字节
* 形参: data -> 要发送的字节
* 返回: 无
* 说明: 无
******************************************************************************/
void UART1_SendByte(u8 data)
{
USART_SendData8(USART1, data);
/* 等待传输结束 */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
/*******************************************************************************
* 名称: UART1_SendStr
* 功能: UART1发送len个字符
* 形参: data -> 指向要发送的字符串
* len -> 要发送的字节数
* 返回: 无
* 说明: 无
******************************************************************************/
void UART1_SendStr(u8 *str)
{
while(*str != '\0')
{
UART1_SendByte(*str++);/* 循环调用发送一个字符函数 */
}
}
/*******************************************************************************
* 名称: UART2_ReceiveByte
* 功能: UART2接收一个字符
* 形参: 无
* 返回: 接收到的字符
* 说明: 无
******************************************************************************/
u8 UART1_ReceiveByte(void)
{
u8 UART1_RX_BUF;
/* 等待接收完成 */
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
UART1_RX_BUF = USART_ReceiveData8(USART1);
return UART1_RX_BUF;
}
/*******************************************************************************
* 名称: fputc
* 功能: 重定向c库函数printf到UART1
* 形参: 无
* 返回: 要打印的字符
* 说明: 由printf调用
******************************************************************************/
#ifdef _IAR_
int fputc(int ch, FILE *f)
{
/* 将Printf内容发往串口 */
UART1_SendByte(ch);
return (ch);
}
#else
PUTCHAR_PROTOTYPE
{
/* Write a character to the UART1 */
UART1_SendByte(c);
return (c);
}
#endif
GETCHAR_PROTOTYPE
{
#ifdef _COSMIC_
char c = 0;
#else
int c = 0;
#endif
/* Loop until the Read data register flag is SET */
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
c = USART_ReceiveData8(USART1);
return (c);
}
#include "stm8l15x.h"
void Uart1_Init(void)
{
CLK_PeripheralClockConfig(CLK_Peripheral_USART1,ENABLE);
SYSCFG_REMAPDeInit();
SYSCFG_REMAPPinConfig(REMAP_Pin_USART1TxRxPortA,ENABLE);
GPIO_Init(GPIOA, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);//TXD
GPIO_Init(GPIOA, GPIO_Pin_3, GPIO_Mode_In_PU_No_IT);//RXD
USART_DeInit(USART1);//复位UART1
/*
* 将UART1配置为:
* 波特率 = 115200
* 数据位 = 8
* 1位停止位
* 无校验位
* 使能接收和发送
*/
USART_Init(USART1,(u32)115200, USART_WordLength_8b, USART_StopBits_1,
USART_Parity_No, USART_Mode_Tx|USART_Mode_Rx);
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//开启接收中断
//USART_ITConfig(USART1, USART_IT_TC, ENABLE);//开启接收中断
USART_Cmd(USART1, ENABLE);//使能UART2
}
/*******************************************************************************
* 名称: UART1_SendByte
* 功能: UART1发送一个字节
* 形参: data -> 要发送的字节
* 返回: 无
* 说明: 无
******************************************************************************/
void UART1_SendByte(u8 data)
{
USART_SendData8(USART1, data);
/* 等待传输结束 */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
/*******************************************************************************
* 名称: UART1_SendStr
* 功能: UART1发送len个字符
* 形参: data -> 指向要发送的字符串
* len -> 要发送的字节数
* 返回: 无
* 说明: 无
******************************************************************************/
void UART1_SendStr(u8 *str)
{
while(*str != '\0')
{
UART1_SendByte(*str++);/* 循环调用发送一个字符函数 */
}
}
/*******************************************************************************
* 名称: UART2_ReceiveByte
* 功能: UART2接收一个字符
* 形参: 无
* 返回: 接收到的字符
* 说明: 无
******************************************************************************/
u8 UART1_ReceiveByte(void)
{
u8 UART1_RX_BUF;
/* 等待接收完成 */
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
UART1_RX_BUF = USART_ReceiveData8(USART1);
return UART1_RX_BUF;
}
/*******************************************************************************
* 名称: fputc
* 功能: 重定向c库函数printf到UART1
* 形参: 无
* 返回: 要打印的字符
* 说明: 由printf调用
******************************************************************************/
#ifdef _IAR_
int fputc(int ch, FILE *f)
{
/* 将Printf内容发往串口 */
UART1_SendByte(ch);
return (ch);
}
#else
PUTCHAR_PROTOTYPE
{
/* Write a character to the UART1 */
UART1_SendByte(c);
return (c);
}
#endif
GETCHAR_PROTOTYPE
{
#ifdef _COSMIC_
char c = 0;
#else
int c = 0;
#endif
/* Loop until the Read data register flag is SET */
while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);
c = USART_ReceiveData8(USART1);
return (c);
}
阅读全文
1 0
- 关于stm8l05RB的usart1串口复用A2,A3配置
- STM32串口USART1的使用方法和程序
- STM32串口USART1的使用方法和程序
- hdu 5976 a1*a2*a3...
- [原创]关于a1,a2,a3,...,an共n个元素依次入栈其可能出栈的排列数的计算
- 数组元素交叉排列的算法题(a1 a2 a3 .. an b1 b2 b3 .. bn -->a 1 b1, a2 b2, a3 b3, .. an bn )
- 数组元素交叉排列的算法题(a1 a2 a3 .. an b1 b2 b3 .. bn -->a 1 b1, a2 b2, a3 b3, .. an bn )
- 数组元素交叉排列的算法题(a1 a2 a3 .. an b1 b2 b3 .. bn -->a 1 b1, a2 b2, a3 b3, .. an bn )
- 设双链表表示的线性表L=(a1,a2,a3.....an)将L改造为L=(a1,a3,....an...a4,a2)
- STM32 USART1对PWM的影响,串口影响PWM
- stm32f407的串口使用集合(USART1,USART2,USART3,USART6)
- STM32基础知识3-STM32串口USART1的使用方法和程序
- STM32基础知识3-STM32串口USART1的使用方法和程序
- 关于串口的配置
- 完成了从Mantis-1.0.0a2到Mantis-1.0.0a3的升级工作
- iOS中组数的另一种表示方法 @[@"a1", @"a2", @"a3", @"a4", @"a5"];
- LPC11E68串口USART1学习笔记
- 求n = a1*a2*33...*ak 且满足(1<a1<=a2<=a3...<=ak<=n)的状态数
- Windows搭建MongoDB分片以及复制集
- CDQZ Challenge 2
- 关于Android Studio报错Gradle's dependency cache may be corrupt (this sometimes occurs after a network
- Spring JDBC使用方法
- 快速幂 + 逆元
- 关于stm8l05RB的usart1串口复用A2,A3配置
- 牛顿法与拟牛顿法学习笔记(四)BFGS 算法
- ThreadLocal
- CBoard框架使用总结五--角色权限控制
- IDEA下创建一个Maven + SpringMVC项目
- 网络编程基础了解
- CodeForces 438D 浅谈区间取模线段树
- [笔记分享] [Camera] 相机的曝光三要素
- mysql之存储函数