stm8s103k3 周期 捕获_stm8s103k3的UART发送数据问题

/*    添加包含芯片的头文件    */

#include

/*******************************************************************************

**函数名称:void UART1_Init(unsigned int baudrate)

**功能描述:初始化USART模块

**入口参数:unsigned int baudrate  -> 设置串口波特率

**输出:无

*******************************************************************************/

void UART1_Init(unsigned int baudrate)

{

unsigned int baud;              //

baud = 16000000 / baudrate;     //设定串口相应波特率与串口时钟的分频数

//先写BRR2 , 再写BRR1

UART1_BRR2 = ((unsigned char)((baud & 0xf000) >> 8 )) | ((unsigned char)(baud & 0x000f));       //先写波特比率的高4位与低4位

UART1_BRR1 =  ((unsigned char)((baud & 0x0ff0) >> 4));                                          //后写波特比率的中间8位

UART1_CR1_bit.UART0 = 0;        //使能UART3

UART1_CR2_bit.RIEN = 1;         //使能中断接收

UART1_CR2_bit.TEN = 1;          //使能发送

UART1_CR2_bit.REN = 1;          //接收使能

}

/*******************************************************************************

**函数名称:void Uart1_SendData(unsigned char  data)

**功能描述:向串口发送寄存器写入一个字节数据

**入口参数:unsigned char  data

**输出:无

*******************************************************************************/

void Uart1_SendData(unsigned char  data)

{

while(!(UART1_SR&0X80));        //判断发送数据寄存器是否为空

UART1_DR = data;                //向发送寄存器写入数据

}

/*    主函数    */

int main(void)

{

asm("sim");                     //关闭系统总中断

CLK_CKDIVR = 0x00;              //CPUDIV = 1 HSIDIV = 1  内部时钟 = 16Mhz

UART1_Init(9600);               //调用串口1初始化函数,并设置波特率为9600 bps

asm("rim");                     //打开系统总中断

while(1)                        //进入死循环,等待串口接收中断

{

;

}

}

/*    串口1接收数据中断服务函数    */

#pragma vector = 20              //设置串口1接收中断向量号 = 20

__interrupt void UART1_RX_RXNE(void)

{

unsigned char ch1;

UART1_SR_RXNE = 1;     //清除中断标志

ch1 = UART1_DR;        //读出串口接收到的数据

Uart1_SendData(ch1);   //把接收到的数据再通过串口发送出去

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值