完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
小弟是一名大四的学生。平时单片机语言基础较差,现在搞毕业设计。一不小心选了个STM8的课题。想知道怎么用STM8(因为学校么有钱,所以我用的是微雪的EX-STm8-Q80学习板,STVD和cosmic都已装好)的UART实现通过触摸一块板子的电容式触摸键使另一块板子的LED灯依次点亮。LED灯点亮的代码小弟勉强可以从样例程序理解,但是UART真心不会。想知道怎么样可以快速入门UART数据传送,还望各路大虾指点。说说学习方法。很急!!在线等回复 。现在在看max 3232的样例程序主函数如下main()
{ u8 tmp=0; Init_UART3(); _asm("rim"); st7920LcdInit(); /*LCD初始化*/ showLine(0,0,lcd_buffer,"MAX3232 Example"); showLine(0,1,lcd_buffer,"USART TX<->RX"); showLine(0,2,lcd_buffer,"Data:"); refreshLCD(lcd_buffer); /*刷新LCD*/ while(1) { UART3_sendchar(tmp); delay_ms(10); //showLine(6,2,lcd_buffer,"0x%x2",(u16)); refreshLCD(lcd_buffer); /*刷新LCD*/ tmp++; delay_ms(1000); } } ifndef _WS_UART3_H #define _WS_UART3_H #include 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;//允许接收,发送,开接收中断 } UART函数如下 void UART3_sendchar(u8 data) { while((UART3_SR & 0x80)==0x00); UART3_DR=data; } @far @interrupt void UART3_Recv_IRQHandler (void) { u8 data; data=UART3_DR; showLine(6,2,lcd_buffer,"0x%x2",(u16)data); return; } #endif /*_WS_UART3_H*/ |
|
相关推荐
9个回答
|
|
先把问题明确下,这样别人好帮你。
|
|
|
|
|
|
|
|
恩。这个是个样例程序。我想知道它具体实现了什么功能
|
|
|
|
我只知道它是控制寄存器
|
|
|
|
同学,这些都是寄存器 你没好好看手册哦,好好看下【RMO0016参考手册】的22.7这些寄存器都有介绍的
|
|
|
|
额 。很努力的在看。它的 原理是不是 和 51的串口差不多。TXD发送 ,RXD接受。一个 累加器,然后 SBUF缓存的 啊,通过中断控制?
|
|
|
|
Init_UART3()里是对串口进行初始化
UART3_CR1=0x00; UART3_CR2=0x00; UART3_CR3=0x00;这三句是UART3的模式配置模式配置 包括数据位格式、校验位、收发中断的开启等设置,详见手册。 UART3_BRR2=0x00; UART3_BRR1=0x0d; 这两句是波特率设置 UART3_CR2=0x2c;//允许接收,发送,开接收中断 这句是将接收,发送,开接收中断单独分离出来设置 也可在前面的第二句里完成 UART3_CR2=0x2c;执行完后串口可以收发数据和收到数据后产生中断(上面的配置中未开启发送中断 因此发送数据后不产生中断) 允许发送后 只要对UART3_DR寄存器写操作便通过串口将写入的数据发送出去,发送完后UART3_SR 寄存器的第7为会硬件置1 void UART3_sendchar(u8 data) { while((UART3_SR & 0x80)==0x00); UART3_DR=data; } 这个函数的第二句是将参数data通过串口发送出去, 第一句是发送前即对UART3_DR写操作前先查询UART3_SR 的第7位是否为1,否则说明发送正在进行 等前一个数据发送完后再发送当前数据 |
|
|
|
发送这块先理解吧,这个跟51的uart操作思路一样的 就是多了几个寄存器而已,接收部分也差不多,自己先看看手册 慢慢熟悉下。
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1602 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1536 浏览 1 评论
967 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
680 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1579 浏览 2 评论
1860浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
640浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
513浏览 3评论
527浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
500浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 12:33 , Processed in 0.955134 second(s), Total 95, Slave 78 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号