ST
3合一开发板stm8学习之 uart
作者:萧星
程序功能:
接受超级终端输入的值 并显示出来
还得说点上次的 时钟的问题,因为后面可能很少看到配置时钟的部分 所以有必要澄清一下初始化时的状态------1.内部高速rc振荡器提供时钟源
16m
2.时钟分频为8
3.供cpu的时钟是his/8
Ok,现在大家对芯片默认状态有了一点了解,下面开始串口的研究。
Stm8的串口:主要功能:
1:支持异步传输所以成为UART
2
2:lin模式 主从
3 红外编码模式
4 智能卡模拟功能
以上功能并不是所有串口都支持,stm8最多的是3个串口
也不多说 串口应该是大家很熟悉的一种接口,怎么配置 要配置什么 也都很清楚 我就简单说一下配置的地方:
1 数据位
2停止位
3波特率
4使能发送或者接受模块(要中断功能的使能中断|)
这样uart就配置好了 可以发送和接收数据了
说几个主要标志位:
发送端:TXE
硬件置一 说明数据从寄存器移到了 移位寄存器 传输开始了,下一个数据可以写入寄存器了,此时如果使能相应中断 中断将会产生
TC
数据传输完成置位 在停止位i从移位寄存器发送完后tc置位
TXE和TC有什么区别?后面我说了一下自己的想法
接受部分:RXNE置一 接收端移位寄存器的值放到了寄存器中,接收完成可以读取接受的数据。相应中断标志位置位时产生中断。RXNE必须在下一个数据接收完成前清零,读接受寄存器和软件直接写0都可以清除该位。
其他扩展功能 请参考stm8 手册
Ok 现在通过程序 我们来看一下串口的通信配置过程:
配置串口
LINUART_CR1 = 0x00;CR1配置了很多的东西,数据位 校验位 校验中断等 这里配置为8为数据位 无校验 无校验中断
LINUART_CR3 = 0x00; 配置了 停止位 数据相位和极性(同步模式下,用来同步的)但是此处禁止了同步功能 配置为一个停止位
LINUART_BRR2 = 0x0B;
LINUART_BRR1 = 0x08; 这两个寄存器是配置串口波特率 总共是16位 :BRR1是16位中的中间8位,BBR2低4位是16位中的低四位,高4位是16位的高四位
这里我们配置为115200 即 16m/115200==139==0x008B
LINUART_CR2 = 0x0C; CR2用来配置接受使能和中断使能的寄存器,这里配置为接受发送使能
Ok 到此配置完成
发送接受程序:
while(1)
{
printf("nLINUART Example lease press 1 key from keyboar
下面 会给出内部程序
for (i=0;i<10000;i++);//一段延时
while (!(LINUART_SR & 0x20));//等到接受寄存器 不为空 SR中的RXEN位
RxBuffer = LINUART_DR; //读取接受的值 同时清除RXEN位
printf("Key Pressed = %c.n",RxBuffer);//打印输入的值
}
Ok 看一下 printf的 函数:
char putchar (char c)
{
if (c == 'n')
{
while (!(LINUART_SR & 0x40)); 等到发送完成再发送
LINUART_DR = ('r');
/* Wait transmission is completed */
while (!(LINUART_SR & 0x40));
}
while (!(LINUART_SR & 0x80)); 等到数据移到移位寄存器
LINUART_DR = (c);
/* Wait transmission is completed */
while (!(LINUART_SR & 0x80));
return (c);
}
关于 TC和RXEN感觉使用上没什么区别。唯一的区别就是每个字符的发送间隔不一样了。不知道理解对不对 这个向高手请教。
上一篇:STM8单片机的中断控制和中断功能
下一篇:3合一套件 stm8 学习笔记之css
推荐阅读最新更新时间:2024-11-02 00:44
设计资源 培训 开发板 精华推荐
- 13ST84GINK驱动板
- Esp_Burnner:使用 USB-C 接口的简易 8266 模块编程器
- 基于CH554的USB转双串口
- DeepLabCut :对执行各种任务的动物进行无标记姿势估计
- CYUSB3KIT-003、EZ-USB FX3 SuperSpeed Explorer 套件,用于 CY7C65215 全速 USB 串行、双通道桥接控制器
- LT3663IMS8E 5V 降压转换器的典型应用
- DEVKIT-S12VRP: S12VRP评估板
- STEVAL-IKR002V4D、SPIRIT1 868-MHz 低数据速率收发器子板
- AD9951
- LF33CDT-TR 3.3V 极低压降稳压器的典型应用,带开关