您的位置:首页 > 其它

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(); /*
开启总中断 */
 
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: