OpenEdv-开源电子网

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

STM8S103F3P6的串口通讯例程(寄存器版本)?

[复制链接]

25

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-8-10
在线时间
39 小时
发表于 2017-9-21 13:08:03 | 显示全部楼层 |阅读模式
5金钱
谁有STM8S103F3P6的串口通讯例程(寄存器版本)?发一份给我,谢谢!
qq:1404014534@qq。com

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

使用道具 举报

21

主题

106

帖子

0

精华

高级会员

Rank: 4

积分
805
金钱
805
注册时间
2017-6-30
在线时间
171 小时
发表于 2017-9-21 17:26:26 | 显示全部楼层
回复

使用道具 举报

25

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-8-10
在线时间
39 小时
 楼主| 发表于 2017-9-22 15:08:47 | 显示全部楼层
帮忙顶一下,顶一下
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2017-10-16
在线时间
8 小时
发表于 2017-10-20 17:00:52 | 显示全部楼层
void UART1_Init(void)
{   
  UART1_CR2 = 0;           // 禁止UART发送和接收
  UART1_CR1 = 0;           // b5 = 0,允许UART,禁止奇偶校验
        //一个起始位,8个数据位
        UART1_CR3 = 0;           // 1个停止位              
  UART1_BRR2 = 0;
  UART1_BRR1 = 0x0d;  // 实际的波特率分频系数为00D0(208)
// 对应的波特率为2000000/208=9600
  UART1_CR2 = 0x02C;// 允许发送,接收//允许接收中断
}


/********************************************************************************
函数功能:从UART3发送一个字符
输入参数:ch -- 要发送的字符
修改时间:2011 5 26
*********************************************************************************/
void UART1_SendChar(unsigned char ch)
{
        unsigned char i;
  while((UART1_SR & 0x80) == 0x00);  // 若发送寄存器不空,则等待
  UART1_DR = ch;
for(i=0;i<100;i++);        // 将要发送的字符送到数据寄存器  
}


























@far @interrupt void UART1_Recv_IRQHandler (void)
{
  unsigned char ch;
  ch = UART1_DR;          // 读入接收到的字符
  UART1_SendChar(ch);       // 将字符发送出去
}   
回复

使用道具 举报

25

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
183
金钱
183
注册时间
2017-8-10
在线时间
39 小时
 楼主| 发表于 2017-10-20 17:25:04 | 显示全部楼层
鼻涕虫买房子 发表于 2017-10-20 17:00
void UART1_Init(void)
{   
  UART1_CR2 = 0;           // 禁止UART发送和接收

谢谢!!!
回复

使用道具 举报

1

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2016-8-5
在线时间
55 小时
发表于 2017-11-10 23:46:55 | 显示全部楼层
/* 包含的头文件 --------------------------------------------------------------*/
#include "bsp.h"


/************************************************
函数名称 : UART1_Init(unsigned int baudrate)
功    能 : 初始化USART模块
参    数 : unsigned int baudrate -> 设置串口波特率
返 回 值 : 无
作    者 : StrangeGamma
*************************************************/
void UART1_Init(unsigned int baudrate)
{   
  unsigned int baud;              //
  
  baud = 16000000 / baudrate;     //设定串口相应波特率与串口时钟的分频数
  
  //先写波特比率的高4位与低4位
  UART1_BRR2 = ((unsigned char)((baud & 0xf000) >> 8 )) | \
                ((unsigned char)(baud & 0x000f));        
  
  UART1_BRR1 =  ((unsigned char)((baud & 0x0ff0) >> 4));                                          //后写波特比率的中间8位
  
  UART1_CR1_bit.UART0 = 0;        //使能UART0
  UART1_CR2_bit.RIEN = 1;         //使能中断接收
  UART1_CR2_bit.TEN = 1;          //使能发送
  UART1_CR2_bit.REN = 1;          //接收使能

}


/************************************************
函数名称 : void Uart_SendData(unsigned char  data)
功    能 : 向串口发送寄存器写入一个字节数据
参    数 : unsigned char  data -> 数据
返 回 值 : 无
作    者 : StrangeGamma
*************************************************/
void Uart_SendData(unsigned char  data)
{
  while(!(UART1_SR&0X80));        //判断发送数据寄存器是否为空
  UART1_DR = data;                //向发送寄存器写入数据  
}


/************************************************
函数名称 : int fputc(int ch, FILE *f)
功    能 : 系统标准Printf函数的接口函数
参    数 : int ch, FILE *f 系统连接
返 回 值 : 无
作    者 : StrangeGamma
*************************************************/
int fputc(int ch, FILE *f)
{
  Uart_SendData(ch);
  return ch;
}


#if EN_USART1_INTERRUPTED   //使能USART中断

/*    串口接收数据中断服务函数    */
#pragma vector =20      

__interrupt void UART1_RX_RXNE(void)
{         
  unsigned char ch1;

  UART1_SR_RXNE = 1;    //清除中断标志
  ch1 = UART1_DR;       //读出串口接收到的数据
  Uart_SendData(ch1);   //把接收到的数据再通过串口发送出去
}

#endif

/**** Copyright (C)2017 StrangeGamma. All Rights Reserved **** END OF FILE ****/
回复

使用道具 举报

1

主题

11

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2016-8-5
在线时间
55 小时
发表于 2017-11-10 23:47:33 | 显示全部楼层
/**
  **********************************  STM8S  ***********************************
  * @文件名     : Drive_Usart.h
  * @作者       : StrangeGamma
  * @说明       : 寄存器
  * @文件版本   : V1.0.0
  * @日期       : 2017年11月01日
  * @摘要       : USART底层驱动
  *****************************************************************************/

/* 定义防止递归包含 ----------------------------------------------------------*/
#ifndef __DRIVE_USART_H_
#define __DRIVE_USART_H_


/* 宏定义 --------------------------------------------------------------------*/
#define EN_USART1_INTERRUPTED  0   // USART1中断使能(1)/禁止(0)


/* USART端口定义----------------------------------------------------------------*/
//USART1_TX --> PD5
//USART1_RX --> PD6


/* 函数申明 ------------------------------------------------------------------*/
void UART1_Init(unsigned int baudrate); //USART初始化
void Uart_SendData(unsigned char  data);//USART发送1bit数据


#endif /* __DRIVE_USART_H_ */

/**** Copyright (C)2017 StrangeGamma. All Rights Reserved **** END OF FILE ****/
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-6-16 22:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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