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基于ST Visual Develop开发输入输出按键检测示例
STM8S903K3T6C基于ST Visual Develop开发外部中断示例