您的位置 首页 IC

STM8S UART2 TX & RX

C语言:Codee#12198/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++实验平台

C言语: Codee#12198

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 试验渠道 : ST 官方三合一套件
+ 硬件 : STM8S105S6T6C
+ 开发渠道 : IAR For STM8 1.10
+ 仿真器 : ST-Link
+ 日期 : 2010-7-23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include “stm8s.h”

unsignedcharRX_Words;// 接纳到的数据
unsignedcharflag;// 接纳到数据标志位

/*******************************************************************************
* ==启用外部晶振函数==
*******************************************************************************/
voidHSE_CLK_INIT(void)
{
CLK_DeInit();
CLK_HSECmd(ENABLE);
while(SET!=CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE);
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}

/*******************************************************************************
* ==UART2初始化函数==
* UART2_DeInit(); –> 复位串口2的寄存器值
* UART2_Init((u32)9600, UART2_WORDLENGTH_8D, UART2_STOPBITS_1, UART2_PARITY_NO, UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
–> 波特率 9600 , 8位数据位 , 1位中止位 , 无奇偶效验 , , 发送接纳使能
* UART2_ITConfig(UART2_IT_RXNE, ENABLE); –> 使能接纳中止
* UART2_Cmd(ENABLE); –> 使能串口2
*******************************************************************************/
voidUART2_INIT(void)
{
UART2_DeInit();
UART2_Init((u32)9600,UART2_WORDLENGTH_8D,UART2_STOPBITS_1,UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE,UART2_MODE_TXRX_ENABLE);
UART2_ITConfig(UART2_IT_RXNE,ENABLE);
UART2_Cmd(ENABLE);
}

/*******************************************************************************
* ==UART2_TX 发送1个字节 函数==
* UART2_FLAG_TXE : Transmit Data Register Empty flag 串口2发送寄存器为空标志位 回来1 为空 回来0 不空
*******************************************************************************/
voidUart2_Send1Byte(unsignedcharTxData)
{
while(UART2_GetFlagStatus(UART2_FLAG_TXE)==0);
UART2_SendData8(TxData);
}

/*******************************************************************************
* ==Main函数==
* 需求装备 stm8s.h 的相关文件
1 运用STM8S105相关文件 “ #define STM8S105 ”
* 需求装备 stm8s_conf.h 的相关文件
1 运用外部晶振 要把时钟大局变量修改成运用的晶振 “ #define HSE_VALUE ((u32) 7372800) ”
2 装备串口2的相关初始化文件 “ #define _UART2 (1) ”
* 不要忘掉使能大局中止!
*******************************************************************************/
voidmain(void)
{
HSE_CLK_INIT();
UART2_INIT();
enableInterrupts();

while(1)
{
if(flag)
{
flag=0;
Uart2_Send1Byte(RX_Words);// 将接纳到的数据发送出去
}
}
}
/*******************************************************************************
* ==RX 接纳中止==
* UART2_IT_RXNE : Data Register Not Empty interrupt 接纳寄存器 满 标志位
*******************************************************************************/
#pragma vector=0x17
__interruptvoidUART2_RX_IRQHandler(void)
{
UART2_ClearITPendingBit(UART2_IT_RXNE);// 清标志位
RX_Words=UART2_ReceiveData8();// 把接纳到的数据仿制给变量
flag=1;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/252192.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部