当前位置:网站首页>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亮,否则灭
经过测试,都是没问题的,你也赶紧试试吧
边栏推荐
- C program compilation and predefined detailed explanation
- Kubernetes:(九)coredns(浪不动了)
- 【学习笔记之菜Dog学C】动态内存管理
- 织梦内核电动伸缩门卷闸门门业公司网站模板 带手机版【站长亲测】
- SAP SD module foreground operation
- Continuing to invest in product research and development, Dingdong Maicai wins in supply chain investment
- Continuing to invest in product research and development, Dingdong Maicai wins in supply chain investment
- Continuing to pour money into commodities research and development, the ding-dong buy vegetables in win into the supply chain
- QNX Hypervisor 2.2 user manual] 10.1 gm vdev options
- There are n steps in total, and you can go up to 1 or 2 steps each time. How many ways are there?
猜你喜欢
Simple record of Flink principle flow chart
Continuing to invest in product research and development, Dingdong Maicai wins in supply chain investment
APP电商如何快速分润分账?
2022焊工(初级)上岗证题目模拟考试平台操作
What is SVN (Subversion)?
小甲鱼汇编笔记
esp32 releases robot battery voltage to ros2 (micro-ros+CoCube)
Flask Framework Beginner-05-Command Management Manager and Database Use
企业虚拟偶像产生了实质性的价值效益
SAP SD模块前台操作
随机推荐
2022G1工业锅炉司炉考试练习题及模拟考试
pytorch applied to MNIST handwritten font recognition
DHCP服务详解
HBuilderX的下载安装和创建/运行项目
What is SVN (Subversion)?
实例037:排序
一个注解替换synchronized关键字:分布式场景下实现方法加锁
持续投入商品研发,叮咚买菜赢在了供应链投入上
工程制图复习题(带答案)
MallBook联合人民交通出版社,推动驾培领域新发展,开启驾培智慧交易新生态
mpf5_定价Bond_yield curve_Spot coupon_duration_有效利率_连续复利_远期_Vasicek短期_CIR模型Derivatives_Tridiagonal_ppf
持续投入商品研发,叮咚买菜赢在了供应链投入上
Taurus.MVC WebAPI 入门开发教程1:框架下载环境配置与运行(含系列目录)。
html select标签赋值数据库查询结果
[QNX Hypervisor 2.2 User Manual] 10.3 vdev gic
yum 仅下载包
Presto中broadcast join和partition join执行计划的处理过程
DDTL:远距离的域迁移学习
LeetCode:899. 有序队列【思维题】
Flink jdbc connector 源码改造sink之 clickhouse多节点轮询写与性能分析