STM8S903K3T6C基于IAR寄存器开发串口通讯示例

STM8S903K3T6C基于IAR寄存器开发串口通讯示例


  • 关于STM8S单片机串口波特率计算公式:
    在这里插入图片描述

⛳在采用内部时钟16MHz的情况下:

  • 🌿假设波特率设置为9600,;UART_DIV = 16 000 000 /9600等于1666,换算成16进制数为0x682,
     UART1_BRR2 = 0x02;
    UART1_BRR1 = 0x68;
  • 🍂假设波特率设置为15200,;UART_DIV = 16 000 000 /115200等于139,换算成16进制数为0x08b,
  /* 波特率:115200 */   
    UART1_BRR2 = 0x0b;
    UART1_BRR1 = 0x08;

⚡注意事项

  • 按下列顺序编写波特率寄存器选择要求的波特率:
    a. UART_BRR2
    b. UART_BRR1

🎉先给UART_BRR2寄存器赋值,然后给UART_BRR1赋值。

🌼示例代码

/*---------------------STM8S903K3T6C-------------------------*/
#include"iostm8s903k3.h"
#include"stdio.h"//printf打印
void CLK_Init(void)
{
//  CLK_ECKR = 0x01; //开启外部时钟寄存器
//  CLK_SWR = 0xb4; //HSE外部时钟源作为主时钟源
//  CLK_CKDIVR = 0x00;//不分频
  
  CLK_ICKR |= 0X01; //使能内部高速时钟 HSI
  CLK_CKDIVR = 0x00; // 不分频,16M
 //    CLK_CKDIVR = 0x08; // 16M内部RC经2分频后系统时钟为8M 
   while(!(CLK_ICKR&0x02)); //HSI准备就绪
     CLK_SWR = 0xE1;//HSI内部时钟源作为主时钟源(复位值) 
}
void UART1_Init(void)//波特率115200
{
    UART1_CR3 = 0x00;
    UART1_CR2  = 0x00;
    UART1_CR3  = 0x00; 
  /* 波特率:9600 */  
     UART1_BRR2 = 0x02;//
    UART1_BRR1 = 0x68;//
  /* 波特率:115200 */   
//    UART1_BRR2 = 0x0b;
//    UART1_BRR1 = 0x08;	

}
int putchar(int c)
{
  while(!(UART1_SR&0x40));
  UART1_DR = c;
  while(!(UART1_SR&0x40));
    return (c);
}
void main()
{	
	unsigned char c;
	CLK_Init();
	UART1_Init();
	UART1_CR2  = 0x0c;
	while(1)
	{
	printf("\n\r请输入一个按键");
	while(!(UART1_SR&0x20));
	c = UART1_DR;
	printf("\n\r输入按键为%c。",c);
	}

}

  • 📜串口输入和打印信息
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值