概述
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("nr请输入一个按键");
while(!(UART1_SR&0x20));
c = UART1_DR;
printf("nr输入按键为%c。",c);
}
}
- ????串口输入和打印信息
最后
以上就是安详乌龟为你收集整理的STM8S903K3T6C基于IAR寄存器开发串口通讯示例的全部内容,希望文章能够帮你解决STM8S903K3T6C基于IAR寄存器开发串口通讯示例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复