历史上的今天
今天是:2024年09月17日(星期二)
2019年09月17日 | stm8s中UART的用法(四种UART中断)
2019-09-17 来源:eefocus
一、应用实例
1.1系统功能
使用STM8的USART进行自发自收(将发送引脚RXD短接到接收引脚TXD),发出数据:0,1,2。。。数据,能接收到自己发出的数据:0,1,2。。。使用LED作出简单指示!
1.2硬件设计

LED控制电路原理图

UART电路原理图
1.2软件设计
/*********************************************************************
目标系统: 基于STM8单片机
应用软件:
*********************************************************************/
/*----------------------------------------------------------------------
实验内容:
USART自发自收,使用PB口的LED指示接收到的数据,观察是否与发送的数据一致。
----------------------------------------------------------------------
硬件连接:
将MCU.RXD与MCU.TXD使用短路帽短接,将PB口的LED指示灯使能开关切换到"ON"状态。
----------------------------------------------------------------------*/
#include #define LED_DDR PB_DDR #define LED_PORT PB_ODR #define LED_CR1 PB_CR1 #define LED_CR2 PB_CR2 void Init_UART3(void) { UART3_CR1=0x00; UART3_CR2=0x00; UART3_CR3=0x00; // 设置波特率,必须注意以下几点: // (1) 必须先写BRR2 // (2) BRR1存放的是分频系数的第11位到第4位, // (3) BRR2存放的是分频系数的第15位到第12位,和第3位 // 到第0位 // 例如对于波特率位9600时,分频系数=2000000/9600=208 // 对应的十六进制数为00D0,BBR1=0D,BBR2=00 UART3_BRR2=0x00; UART3_BRR1=0x0d; UART3_CR2=0x2c;//允许接收,发送,开接收中断 } void UART3_sendchar(unsigned char c) { while((UART3_SR & 0x80)==0x00); UART3_DR=c; } @far @interrupt void UART3_Recv_IRQHandler (void) { unsigned char ch; ch=UART3_DR; LED_PORT=ch; return; } void main(void) { unsigned char i=0; LED_DDR=0XFF; LED_CR1=0XFF; LED_CR2=0X00; Init_UART3(); _asm("rim");//关中断 while(1) { UART3_sendchar(i); i++; }; } 二、特别注意波特率的计算设置方式 三、中断设置
上一篇:STM8L串口中断进不去
史海拾趣
|
我有一颗芯片 ip210w由 8051内核和一个MAC组成 芯片手册有一句话:CPU starts up and runs instructions at address 0xFFFD of external Flash. 就是这句话把我郁闷了好久,怎么烧程序都不行。CPU都跑不起来。 请教高手如何让我的CPU跑起来,谢 ...… 查看全部问答> |
|
不能捕捉到CArchiveException 请各路英雄指教 大家好, 最近我遇到一个问题,在我的应用程序中(MFC工程), 里面有一句代码,是对文件读写的,如果这儿有一个空文件(里面什么内容也没有), 但我们又对它进行了读操作(调用CArchive >>进行读出),那么这儿一定会有个 CArchiveException异 ...… 查看全部问答> |
|
1.如题 ```` 2.还有就是如果一段时间没有数据传输 是不是就自动断开了? 3.断开后就可以继续发AT指令了么? 4.谢谢。。。。。… 查看全部问答> |
|
1、开始我使用的共享MFC库出错,后来我使用的静态MFC库,不出错了,,,但我在PB里已经向目标板加上了MFC组件,不知道为什么出错 2、我生成的EXE文件里如果有中文会显示乱码,不如应该如何解决 先谢谢了… 查看全部问答> |
|
今天调试板子,发现无法连接。第一个想到的是电源电压(焊DSP之前有测过电压都是对的)。 把所有的电容测了,发现RTS管脚处,用了一个RC 滤波电路。C上电压变成2.75V。去掉电容,DSP可连接。 将原本的4.7K,电阻换小后,电压上抬到3V左右。DSP工 ...… 查看全部问答> |
|
求助:建立了一个任务,就是不停进行打开、写、关闭、删除文件的操作,处于ready的状态,同时只有tShell处于ready状态,但spy后发现没有任何任务占用tick时间,中断也没有。该任务没执行。 出现这种情况是在建立任务后,在任务中输入i等指令后,就 ...… 查看全部问答> |
|
1.最基本的:系统开始运行OSStart()会引发一次调度 2.创建一个新任务时,如果此时系统在运行状态,则引发一次调度。3.某任务调用挂起函数挂起自己后引发一次调度。 4.调用恢复任务函数OSTaskResume()引发一次调度。 5.任务延时时,引发一次 ...… 查看全部问答> |




