OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10476|回复: 10

SOS毕业设计STM8的窜口通信

[复制链接]

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
发表于 2012-4-22 09:50:51 | 显示全部楼层 |阅读模式

      小弟是一名大四的学生。平时单片机语言基础较差,现在搞毕业设计。一不小心选了个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 <ws_lcd_st7920.h>

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*/

 

 

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-4-22 10:38:23 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2012-3-4
在线时间
69 小时
发表于 2012-4-22 11:31:42 | 显示全部楼层
先把问题明确下,这样别人好帮你。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
 楼主| 发表于 2012-4-22 13:01:09 | 显示全部楼层
回复【2楼】正点原子:
--------------------------------
请教下这个回复【2楼】正点原子:
---------------------------------首先那个CR1,CR2。CR3是不是寄存器,如果是那是干什么用的,data是什么数据,tmp++;是什么作用。刚才去吃饭了
感谢原子版主的回复
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
 楼主| 发表于 2012-4-22 13:02:02 | 显示全部楼层
回复【3楼】sun:
---------------------------------
恩。这个是个样例程序。我想知道它具体实现了什么功能
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
 楼主| 发表于 2012-4-22 13:13:57 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我只知道它是控制寄存器
回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2012-3-4
在线时间
69 小时
发表于 2012-4-22 13:20:46 | 显示全部楼层
同学,这些都是寄存器 你没好好看手册哦,好好看下【RMO0016参考手册】的22.7这些寄存器都有介绍的
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
 楼主| 发表于 2012-4-22 13:35:09 | 显示全部楼层
回复【7楼】sun:
---------------------------------
额 。很努力的在看。它的 原理是不是 和 51的串口差不多。TXD发送 ,RXD接受。一个 累加器,然后 SBUF缓存的 啊,通过中断控制?
回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2012-3-4
在线时间
69 小时
发表于 2012-4-22 13:43:03 | 显示全部楼层
  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,否则说明发送正在进行 等前一个数据发送完后再发送当前数据

回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2012-3-4
在线时间
69 小时
发表于 2012-4-22 13:45:27 | 显示全部楼层
发送这块先理解吧,这个跟51的uart操作思路一样的 就是多了几个寄存器而已,接收部分也差不多,自己先看看手册 慢慢熟悉下。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2012-4-22
在线时间
4 小时
 楼主| 发表于 2012-4-22 15:56:30 | 显示全部楼层
回复【10楼】sun:
-----------------------------
衷心感谢你的无私帮助,初步算是理解了。我会继续看的,谢啦~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 16:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表