当前位置:网站首页>STM8S105K4T6------串口发送和接收
STM8S105K4T6------串口发送和接收
2022-08-04 02:20:00 【挨踢玩家】
上篇文章讲了如何点亮板载LED,这次来讲,stm8s105k4t6的串口发送数据
不会点亮LED灯可以看—>stm8点亮LED
串口发送部分
步骤: 在点亮LED灯基础上增加一个uart.c和uart.h文件 代码看我下面的图,我后面讲解代码

记得要#include“uart.h”头文件和初始化串口配置函数

main.c就几行代码,照抄我都就行了 ,下面放uart.c和uart.h的代码

这里是是对串口引脚的初始化

UART.C代码
#include "usart.h"
void Usart2_Config(void)
{
//发送接收引角口初始化
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);
GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);
CLK_PeripheralClockConfig(CLK_PERIPHERAL_UART2, ENABLE);
UART2_Init((uint32_t)115200, UART2_WORDLENGTH_8D, UART2_STOPBITS_1,UART2_PARITY_NO,UART2_SYNCMODE_CLOCK_DISABLE, UART2_MODE_TXRX_ENABLE);
UART2_ITConfig(UART2_IT_RXNE_OR, ENABLE);//开启接收中断
UART2_Cmd(ENABLE);
}
void Usart2_SendByte(u8 Byte)
{
UART2_SendData8(Byte);
while((UART2->SR & 0x80) == 0x00)
{
}
}
void Usart2_SendHalfWord(uint16_t ch)
{
uint8_t temp_h, temp_l;
/* 取出高八位 */
temp_h = (ch&0XFF00)>>8;
/* 取出低八位 */
temp_l = ch&0XFF;
/* 发送高八位 */
Usart2_SendByte(temp_h); /* 发送低八位 */
Usart2_SendByte(temp_l);
}
void Usart2_SendByteArr(u8* Buff, u16 Size)
{
while(Size--)
{
Usart2_SendByte(*Buff++);
}
}
void Usart2_SendHalfWordArr(u16* Buff, u16 Size)
{
while(Size--)
{
Usart2_SendHalfWord(*Buff++);
}
}
void Usart2_SendString(char *str)
{
unsigned int k=0;
Delay_us(100);
do
{
Usart2_SendByte(*(str + k));
k++;
}while(*(str + k)!='\0');
Delay_us(100);
}
这几个函数,就是封装发送字节,数组,字符串的函数,这样封装后,代码直接调用函数就能够实现发送的功能
UART.H代码
#ifndef __USART_H
#define __USART_H
#include "stm8s_conf.h"
#define UART2_FRAME_LENGHT 30
//中断缓存串口数据长度
extern u8 Uart2_Buff[UART2_FRAME_LENGHT], Uart2_RecNum;
void Usart2_Config(void);
void Usart2_SendHalfWord(uint16_t ch);
void Usart2_SendByte(u8 Byte);
void Usart2_SendByteArr(u8* Buff, u16 Size);
void Usart2_SendHalfWordArr(u16* Buff, u16 Size);
void Usart2_SendString(char *str);
#endif

最后串口就能实现发送数据啦,我这是因为杜邦线接触不良, 有信号干扰才这样
串口接收部分
因为这里要实现的功能是:串口接收到什么,我们就发什么出去
只需要在main.c里面加上开启总中断的代码就行了
在中断代码里面这样写就行了
这样就能实现发1,LED亮,否则灭
经过测试,都是没问题的,你也赶紧试试吧
边栏推荐
- html select标签赋值数据库查询结果
- Example 041: Methods and variables of a class
- 董明珠直播时冷脸离场,员工频犯低级错误,自家产品没人能弄明白
- QNX Hypervisor 2.2用户手册]10.2 vdev 8259
- v-model
- [QNX Hypervisor 2.2用户手册]10.3 vdev gic
- Presto中broadcast join和partition join执行计划的处理过程
- 2022.8.3-----leetcode.899
- QNX Hypervisor 2.2用户手册]10.1 通用vdev选项
- cdh6.x 集成spark-sql
猜你喜欢

共n级台阶,每次可以上1级或2级台阶,有多少种上法?

Example 040: Reverse List

Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。

第08章 索引的创建与设计原则【2.索引及调优篇】【MySQL高级】

html select标签赋值数据库查询结果

Continuing to invest in product research and development, Dingdong Maicai wins in supply chain investment

Countdown to 2 days, the "New Infrastructure of Cultural Digital Strategy and Ecological Construction of Cultural Art Chain" will kick off soon
编写 BOLL 心得体会

Example 041: Methods and variables of a class

一篇文章看懂JS闭包,从执行上下文角度解析有趣的闭包
随机推荐
实例037:排序
esp32发布机器人电池电压到ros2(micro-ros+CoCube)
MallBook联合人民交通出版社,推动驾培领域新发展,开启驾培智慧交易新生态
yum 仅下载包
2022广东省安全员A证第三批(主要负责人)考试题库及模拟考试
工程制图复习题
第13章 网络安全漏洞防护技术原理与应用
Utilities of Ruineng Micrometer Chip RN2026
What is the source of flinkcdc consuming mysql binlog data without sqltype=delete
实例038:矩阵对角线之和
mpf5_定价Bond_yield curve_Spot coupon_duration_有效利率_连续复利_远期_Vasicek短期_CIR模型Derivatives_Tridiagonal_ppf
持续投入商品研发,叮咚买菜赢在了供应链投入上
计算首屏时间
持续投入商品研发,叮咚买菜赢在了供应链投入上
web端动效 lottie-web 使用
The browser
Small Turtle Compilation Notes
实例039:有序列表插入元素
pytorch applied to MNIST handwritten font recognition
cdh6.x 集成spark-sql