STM8L101系列单片机串口配置详解(基于IAR自带库)
2014-12-29 12:43
344 查看
STM8L101f3p6 有一个串口如图
本历程基于库操作 不讨论具体寄存器操作
有兴趣的同学可以自行参考编程手册
下面看一下手册的了解一下特点
本人英语是个小白只可意会不可言传了
内部结构了由于是基于库函数的所以不做寄存器的分析了
库函数的好处就是可以在不了解单片机寄存器的前提下 可以快速开发应用
下面举个例子
波特率 9600 8位字长停止位一位 无校验
串口模式为收发模式 查询发送 中断接收
在初始化串口之前 应该先初始化 串口对应的IO口 由手册可知串口对应的IO为PC2(USART_RX)和PC3(USART_TX)。
首先宏定义下IO 方便理解和配置
#define TXD_GPIO_PORT GPIOC
#define RXD_GPIO_PORT GPIOC
#define TXD_GPIO_PINS GPIO_Pin_3
#define RXD_GPIO_PINS GPIO_Pin_2
初始化IO
TxD 配置成输出上拉高速模式
RxD 配置成输入上拉无中断模式
GPIO_Init(TXD_GPIO_PORT, TXD_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);
GPIO_Init(RXD_GPIO_PORT, RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);
接下来打开串口模块时钟(之前就是忘配置这个功能 所以一直不好使)
CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);
配置串口详细的功能
USART_Init((u32)9600, USART_WordLength_8D, USART_StopBits_1,
USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Rx| USART_Mode_Tx));
开启接收中断
USART_ITConfig(USART_IT_RXNE, ENABLE); //开启接收中断
打开串口
USART_Cmd(ENABLE);
最后在开启总中断就可以啦
enableInterrupts(); /*
开启总中断 */
发个数据
UART_SendString("This is a UART Demo \r\n");
哈哈 好使
下面是完整的功能函数
/*******************************************************************************
* 名称: Uart_Init
* 功能: UART2初始化操作
* 形参:
无
* 返回:
无
* 说明:
无
******************************************************************************/
void Uart_Init(void)
{
GPIO_Init(TXD_GPIO_PORT,TXD_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(RXD_GPIO_PORT,RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);
// GPIO_ExternalPullUpConfig(GPIOC,GPIO_Pin_3|GPIO_Pin_4, ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);
USART_DeInit(); /*
将寄存器的值复位 */
/*
*
将UART2配置为:
*
波特率 = 9600
*
数据位 = 8
* 1位停止位
*
无校验位
*
使能接收和发送
*/
USART_Init((u32)9600,USART_WordLength_8D, USART_StopBits_1, \
USART_Parity_No,(USART_Mode_TypeDef)(USART_Mode_Rx | USART_Mode_Tx));
USART_ITConfig(USART_IT_RXNE,ENABLE); //开启接收中断
USART_Cmd(ENABLE);
enableInterrupts(); /*
开启总中断 */
}
本历程基于库操作 不讨论具体寄存器操作
有兴趣的同学可以自行参考编程手册
下面看一下手册的了解一下特点
本人英语是个小白只可意会不可言传了
内部结构了由于是基于库函数的所以不做寄存器的分析了
库函数的好处就是可以在不了解单片机寄存器的前提下 可以快速开发应用
下面举个例子
波特率 9600 8位字长停止位一位 无校验
串口模式为收发模式 查询发送 中断接收
在初始化串口之前 应该先初始化 串口对应的IO口 由手册可知串口对应的IO为PC2(USART_RX)和PC3(USART_TX)。
首先宏定义下IO 方便理解和配置
#define TXD_GPIO_PORT GPIOC
#define RXD_GPIO_PORT GPIOC
#define TXD_GPIO_PINS GPIO_Pin_3
#define RXD_GPIO_PINS GPIO_Pin_2
初始化IO
TxD 配置成输出上拉高速模式
RxD 配置成输入上拉无中断模式
GPIO_Init(TXD_GPIO_PORT, TXD_GPIO_PINS, GPIO_Mode_Out_PP_High_Fast);
GPIO_Init(RXD_GPIO_PORT, RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);
接下来打开串口模块时钟(之前就是忘配置这个功能 所以一直不好使)
CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);
配置串口详细的功能
USART_Init((u32)9600, USART_WordLength_8D, USART_StopBits_1,
USART_Parity_No, (USART_Mode_TypeDef)(USART_Mode_Rx| USART_Mode_Tx));
开启接收中断
USART_ITConfig(USART_IT_RXNE, ENABLE); //开启接收中断
打开串口
USART_Cmd(ENABLE);
最后在开启总中断就可以啦
enableInterrupts(); /*
开启总中断 */
发个数据
UART_SendString("This is a UART Demo \r\n");
哈哈 好使
下面是完整的功能函数
/*******************************************************************************
* 名称: Uart_Init
* 功能: UART2初始化操作
* 形参:
无
* 返回:
无
* 说明:
无
******************************************************************************/
void Uart_Init(void)
{
GPIO_Init(TXD_GPIO_PORT,TXD_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);
GPIO_Init(RXD_GPIO_PORT,RXD_GPIO_PINS, GPIO_Mode_In_PU_No_IT);
// GPIO_ExternalPullUpConfig(GPIOC,GPIO_Pin_3|GPIO_Pin_4, ENABLE);
CLK_PeripheralClockConfig(CLK_Peripheral_USART, ENABLE);
USART_DeInit(); /*
将寄存器的值复位 */
/*
*
将UART2配置为:
*
波特率 = 9600
*
数据位 = 8
* 1位停止位
*
无校验位
*
使能接收和发送
*/
USART_Init((u32)9600,USART_WordLength_8D, USART_StopBits_1, \
USART_Parity_No,(USART_Mode_TypeDef)(USART_Mode_Rx | USART_Mode_Tx));
USART_ITConfig(USART_IT_RXNE,ENABLE); //开启接收中断
USART_Cmd(ENABLE);
enableInterrupts(); /*
开启总中断 */
}
相关文章推荐
- IAR开发环境使用串口printf输出(基于STM8L15x系列单片机)
- 基于Oracle和sqlserver的ArcSDE安装配置详解:
- Equinox OSGi系列之三 Equinox配置参数详解
- 大型企业网络配置系列课程详解(六) --PPP链路的配置与相关概念的理解 推荐
- 大型企业网络配置系列课程详解(五) --Frame-Relay配置与相关概念的理解 推荐
- AR28/AR46系列路由器基于源地址策略路由的典型配置
- 大型企业网络配置系列课程详解(三)--OSPF高级配置与相关概念的理解 推荐
- 大型企业网络配置系列课程详解(二) --OSPF多区域配置与相关概念的理解 推荐
- 基于 tomcat 的 JSP 开发环境手动配置详解
- 基于Oracle和sqlserver的ArcSDE安装配置详解:
- 基于C8051F系列单片机的低功耗设计
- 大型企业网络配置系列课程详解(四) --HSRP和VRRP配置与相关概念的理解(一) 推荐
- 利用串口对 89S 系列单片机编程
- 方正方御FG系列防火墙配置详解 推荐
- Linux+Apache服务器配置详解教程系列|____总帖
- 大型企业网络配置系列课程详解(八) --VoIP的配置与相关概念的理解 推荐
- 大型企业网络配置系列课程详解(一)---OSPF单区域配置与相关概念的理解