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

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

🌼示例代码

/*---------------------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);
	



  • 📜串口输入和打印信息

以上是关于STM8S903K3T6C基于IAR寄存器开发串口通讯示例的主要内容,如果未能解决你的问题,请参考以下文章

STM8S903K3T6C基于IAR开发GPIO点灯示例

STM8S903K3T6C基于ST Visual Develop开发输入输出按键检测示例

STM8S903K3T6C基于ST Visual Develop开发外部中断示例

STM8S903K3基于ST Visual Develop开发定时器1中断示例

开源电路STM8S903K3T6C开发板

STM8S系列基于IAR开发串口中断接收和发送示例