铁头山羊stm32(3)串口协议

3.1串口协议

eg:27 转换成二进制00011011

要注意通过串口发送十进制数字, 要从后往前写

空闲起始位11011000停止

可以通过奇偶校验来判断是否出错,不足则在校验为进行补充

3.2UART模块使用方式

波特率:每秒钟最多传送多少位

3.4串口发送数据

1)TxE:发送数据寄存器空

TxE=1 空   TxE=0 非空

2)TC:发送完成

当TxE空且移位寄存器空 TC=1;反之=0

3)RxNE 接收数据寄存器非空

当RDR非空:RxNE=1;反之RxNE=0

ENABLE 使能    DISABLE 禁止

RESET-0 SET-1

#include "stm32f10x.h"
#include "stm32f10x_usart.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include <stdio.h>
#include <delay.h>

void My_USART_SendBytes(USART_TypeDef *USARTx,uint8_t *pData,uint16_t Size);
void My_USART_Init(void);

int main(void)
{
	Delay_Init();
	My_USART_Init();
	
	//printf("hello world");	
	
	while(1)
	{
		uint32_t currenTick = GetTick();
		
	
	}
}

//
//@简介:通过串口发送多个字节
//@参数:USARTx:填写串口名称
//@参数:pDATA:要发送的字节
//@参数:Size:要发送字节的数量,单位是字节
//
void My_USART_SendBytes(USART_TypeDef *USARTx,uint8_t *pData,uint16_t Size)
{
	for(uint32_t i=0;i<Size;i++){
		//#1.等待发送数据寄存器为空
		while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);
		//#2.写入发数据寄存器中
		USART_SendData(USARTx,pData[i]);
	}	
	    //等待发送完成
		while(USART_GetFlagStatus(USARTx,USART_FLAG_TC)==RESET);
	
}

//@简介:对USARET1进行初始化
//		PB6-Tx PB7-Rx
//		11500 8 1 None 双向
//
void My_USART_Init(void)
{
	//#1.初始化PB6 、PB7
	GPIO_InitTypeDef GPIO_InitStruct;
	//PA9 tx
//	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
//	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
//	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
//	GPIO_Init(GPIOA,&GPIO_InitStruct);
//	
//	//PB10 rx
//	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
//	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
//	GPIO_Init(GPIOA,&GPIO_InitStruct);

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
	GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);
	
	//PB6
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_6;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	//PB7
	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_7;
	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_Init(GPIOB,&GPIO_InitStruct);
	
	
	//#2.初始化USART1
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//开启时钟
	
	USART_InitTypeDef USART_InitStruct;
	
	USART_InitStruct.USART_BaudRate =115200;//波特率115200
	USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;//双向
	USART_InitStruct.USART_WordLength=USART_WordLength_8b;//8位数据位
	USART_InitStruct.USART_StopBits=USART_StopBits_1;//停止位长度为1位
	USART_InitStruct.USART_Parity=USART_Parity_No;//无校验
	
	USART_Init(USART1,&USART_InitStruct);
}


int fputc(int ch,FILE *f)
{
	//1.等待发送寄存器为空
	while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
	
	//2.发送
	USART_SendData(USART1,(uint8_t)ch);
	
	return ch;
}

### 铁头山羊串口调试助手简介 铁头山羊串口调试助手是一款广泛应用于嵌入式开发中的工具软件,主要用于通过计算机与嵌入式设备之间的串口通信进行测试和调试。该工具支持多种功能,包括但不限于数据收发、波特率设置以及特殊字符处理等功能[^1]。 以下是关于如何查找或下载铁头山羊串口调试助手及其使用指南的相关信息: #### 如何查找或下载铁头山羊串口调试助手 通常情况下,此类工具可以通过以下几种途径获得: - **官方网站**:访问铁头山羊官方站点或其他可信的技术论坛,这些地方往往提供最新版本的工具下载链接。 - **第三方资源网站**:一些知名的电子工程师社区也可能分享此款工具的安装包,但需要注意的是,在从非官方渠道下载前应确认文件的安全性并查杀病毒[^2]。 #### 获取铁头山羊串口调试助手的使用教程 针对新手用户来说,掌握基本操作流程非常重要。一般可以从以下几个方面入手学习: - **在线文档**:许多开发者会在发布工具的同时附带详细的PDF版说明书或者HTML网页形式的帮助手册。 - **视频教学**:YouTube或者其他国内主流视频平台上可能有专门讲解这款特定应用的操作方法的教学片断可供参考观看[^3]。 下面给出一段简单的Python代码示例展示怎样利用pyserial库模拟实现部分基础性的串口通讯逻辑作为补充说明材料之一: ```python import serial ser = serial.Serial(&#39;COM3&#39;, 9600) # 打开指定端口号为 COM3 的串行连接,设定初始波特率为 9600bps if ser.isOpen(): print("Serial Port Opened.") else: print("Failed to open Serial port.") try: while True: data = input("Enter message:") + &#39;\r\n&#39; ser.write(data.encode()) # 将字符串编码成字节序列并通过串口发送出去 except KeyboardInterrupt: ser.close() # 当捕获到 Ctrl+C 中断信号时关闭串口结束程序运行 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值