STM8S105K4T6------串口发送和接收
发送 串口 接收 ------
2023-09-11 14:19:59 时间
上篇文章讲了如何点亮板载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亮,否则灭
经过测试,都是没问题的,你也赶紧试试吧
相关文章
- HTTPS的页面发送不了HTTP请求?——关于混合内容
- 使用阿里大于发送短信
- phpMyAdmin 个性化设置,字体大小设置,去掉“以树形显示数据库”,禁用“发送错误报告”
- 串口发送一帧数据时,两个字节的间隔时间是多少?
- QT开发之旅四邮件发送工具
- 如何用ABAP给Netweaver上登录的其他用户发送消息
- 使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
- android 9.0屏蔽短信功能(短信发送开关)
- WebRTC源码分析 视频采集发送流程
- 补习系列(12)-springboot 与邮件发送
- Python编程:Flask扩展Flask-Mail发送邮件
- c# 发送Email的2中方式
- Linux通过mailx向网易163发送邮件
- SMTP 通过 ssh 通道发送垃圾邮件
- 十行代码实现Python3 SMTP发送邮件