国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)

這篇具有很好參考價值的文章主要介紹了STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?? 專欄簡介:本專欄記錄了從零學習單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學習51單片機,其是STM32等高級單片機的基礎;這樣再學習STM32時才能融會貫通。
?? 專欄適用人群 :適用于想要從零基礎開始學習入門單片機,且有一定C語言基礎的的童鞋。
??專欄目標:實現從零基礎入門51單片機和STM32單片機,力求在玩好單片機的同時,能夠了解一些計算機的基本概念,了解電路及其元器件的基本理論等。

?? 專欄主要內容: 主要學習STM32單片機的功能、各個模塊、單片機的外設、驅動等,最終玩好單片機和單片機的外設,全程手敲代碼,實現我們所要實現的功能。
?? 專欄說明 :如果文章知識點有錯誤的地方,歡迎大家隨時在文章下面評論,我會第一時間改正。讓我們一起學習,一起進步。
??專欄主頁:http://t.csdn.cn/HCD8v

本學習過程參考:https://space.bilibili.com/383400717

STM3單片機安裝軟件、各種資料以及源碼的路徑:
鏈接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取碼:asdf

鏈接里壓縮包的解壓密碼:32

本大節(jié)主要學習USART的相關知識,包含九小節(jié):
第一小節(jié)主要學習USART串口協議的理論基礎知識
第二小節(jié)主要學習USART串口外設的理論基礎知識
第三小節(jié)是對第一、二小節(jié)的內容寫一個串口發(fā)送程序進行練習
第四小節(jié)是對第一、二小節(jié)的內容再寫一個串口發(fā)送+接收的程序進行練習
第五小節(jié)主要學習USART串口數據包的理論基礎知識
第六小節(jié)是對第五小節(jié)的內容寫一個串口收發(fā)HEX數據包程序進行練習
第七小節(jié)是對第五小節(jié)的內容再寫一個串口收發(fā)文本數據包程序進行練習
第八小節(jié)主要了解FlyMcu串口下載的知識
第九小節(jié)主要了解STLINK Utility串口下載的知識
最終附上所有的源代碼;

本小節(jié)主要是對前面學習的串口理論知識進行實戰(zhàn)練習:寫一個串口發(fā)送的程序進行練習。

一、本節(jié)目標

目標:串口發(fā)送

寫一個串口模塊,通過串口通信,把一些數據發(fā)到電腦上的串口助手來顯示,
把STM32的串口引腳,接到電腦上,如下圖所示:
STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)
之后電腦端打開串口助手軟件,按如下圖進行配置,并打開串口
STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)
按一下復位鍵,程序剛開始啟動時會向串口發(fā)送一串數據,如下圖所示:

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)
此時切換成文本模式,再次復位,這時,軟件就會對剛才的數據進行文本映射,找到每個數據對應的字符,以字符串的形式顯示出來;如下圖所示:

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)

二、練習1:串口發(fā)送

2.1 接線圖

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)

  • 最下面是USB轉串口模塊,跳線帽要插在VCC和3V3這兩個引腳上(圖中黃色小塊兒),選擇通信的TTL電平為3.3;然后通信引腳TXD和RXD要接在STM3的PA9和PA10口,選擇這兩個引腳的原因是引腳定義表中USART1的TX是PA9,RX是PA10;然后USB轉串口的負極和STM32的負極接在一起進行共地;
  • USB轉串口模塊和JLINK都是要插在電腦的USB口;

硬件電路如下所示:
STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)
然后打開電腦設備管理器,確認串口端口正常鏈接沒問題:

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)

2.2 源碼

  • STM32入門教程資料\程序源碼\STM32Project\9-1 串口發(fā)送\User
  • STM32入門教程資料\程序源碼\STM32Project\9-1 串口發(fā)送\Hardware
  • STM32入門教程資料\程序源碼\STM32Project\9-1 串口發(fā)送運\System

2.2.1 代碼思路

STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)
整個代碼的流程參考以上結構圖:

  • 第一步,開啟時鐘;把需要用到的USART和GPIO的時鐘打開;
  • 第二步,GPIO初始化,把TX配置成復用輸出,RX配置成復用輸入;
  • 第三步,配置USART,直接使用一個結構體,就可以把以上框圖中所有參數配置好;
  • 第四步,如果只需要發(fā)送功能,就直接開啟USART,初始化就結束了;如果需要接收功能,那可能還需要配置中斷;那就在開啟USART之前,再加上ITConfig和NVIC的代碼;
  • 初始化完成后,如果要發(fā)送數據,就調用發(fā)送函數;如果如果要接收數據,就調用就收的函數;如果要獲取發(fā)送和接收的狀態(tài),就調用獲取標志位的函數;

2.2.2 具體代碼及解釋

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Serial.h"

int main(void)
{
	OLED_Init();
	
	Serial_Init();
	
	Serial_SendByte(0x41);
	
	uint8_t MyArray[] = {0x42, 0x43, 0x44, 0x45};
	Serial_SendArray(MyArray, 4);
	
	Serial_SendString("\r\nNum1=");
	
	Serial_SendNumber(111, 3);
	
	printf("\r\nNum2=%d", 222);
	
	char String[100];
	sprintf(String, "\r\nNum3=%d", 333);
	Serial_SendString(String);
	
	Serial_Printf("\r\nNum4=%d", 444);
	Serial_Printf("\r\n");
	
	while (1)
	{
		
	}
}

Serial.c文章來源地址http://www.zghlxwxcb.cn/news/detail-497795.html

#include "stm32f10x.h"                  // Device header
#include <stdio.h>
#include <stdarg.h>

void Serial_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//開啟USART1的時鐘;USART1是APB2的外設
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//開啟GPIO時鐘
	
	/*初始化引腳,把PA9配置為復用推挽輸出,供USART1的TX使用*/
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//引腳模式選擇復用推挽輸出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//因為本節(jié)只需要發(fā)送,所以只初始化Pin_9即可
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO引腳;
	
	USART_InitTypeDef USART_InitStructure;
	USART_InitStructure.USART_BaudRate = 9600;//波特率設置為9600
	USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//硬件流控制,不開啟 
	USART_InitStructure.USART_Mode = USART_Mode_Tx;//模式選擇為發(fā)送模式
	USART_InitStructure.USART_Parity = USART_Parity_No;//檢驗位選擇無校驗
	USART_InitStructure.USART_StopBits = USART_StopBits_1;//停止位選擇1
	USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長選擇8位
	USART_Init(USART1, &USART_InitStructure);//初始化USART1
	
	USART_Cmd(USART1, ENABLE);
}
/*發(fā)送字節(jié)函數*/
void Serial_SendByte(uint8_t Byte)
{
	USART_SendData(USART1, Byte);//發(fā)送數據,就是寫DR寄存器
	while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);//等待TXE置1;不需要手動清零,下一次發(fā)送數據時該標志位會自動清零
}

/*發(fā)送數組函數*/
void Serial_SendArray(uint8_t *Array, uint16_t Length)
{
	uint16_t i;
	for (i = 0; i < Length; i ++)
	{ 
		Serial_SendByte(Array[i]);
	}
}
/*發(fā)送字符串函數*/
void Serial_SendString(char *String)
{
	uint8_t i;
	for (i = 0; String[i] != '\0'; i ++)
	{
		Serial_SendByte(String[i]);
	}
}

/*計算x的y次方*/
uint32_t Serial_Pow(uint32_t X, uint32_t Y)
{
	uint32_t Result = 1;
	while (Y --)
	{
		Result *= X;
	}
	return Result;
}

/*發(fā)送數字函數*/
void Serial_SendNumber(uint32_t Number, uint8_t Length)
{
	uint8_t i;
	for (i = 0; i < Length; i ++)
	{
		Serial_SendByte(Number / Serial_Pow(10, Length - i - 1) % 10 + '0');
	}
}
/*
重寫fputc函數
將fputc函數重定向到串口
重寫他的原因是后面我們用printf函數,printf函數底層是不斷調用fputc函數的
*/
int fputc(int ch, FILE *f)
{
	Serial_SendByte(ch);
	return ch;
}

void Serial_Printf(char *format, ...)
{
	char String[100];
	va_list arg;//參數表
	va_start(arg, format);//從format位置開始接收參數表
	vsprintf(String, format, arg);
	va_end(arg);//釋放參數表
	Serial_SendString(String);
}

到了這里,關于STM32單片機(九)USART串口----第三節(jié):USART串口實戰(zhàn)練習(串口發(fā)送)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 兩塊stm32單片機串口通信講解

    兩塊stm32單片機串口通信講解

    本篇文章記錄了如何使用stm32f103zet6核心板(下位機)通過串口向stm32f103zet6學習板(上位機)發(fā)送數據,stm32f103zet6學習板完成接收,并將接收到的數據顯示在LCD顯示屏上。 正點原子精英STM32F103ZET6學習板一塊(帶2.8寸顯示屏) STM32F103ZET6核心板一塊 電源適配器、數據線以及杜

    2024年02月16日
    瀏覽(720)
  • 【單片機】基于STM32的UART串口通信

    【單片機】基于STM32的UART串口通信

    簡單講解一下UART通信協議,以及UART能夠實現的一些功能,還有有關使用STM32CubeMX來配置芯片的一些操作。實驗內容基于 正點原子精英板 開發(fā)板,單片機芯片為 STM32F103ZET6 。 在后面我會以我使用的STM32F429開發(fā)板來舉例講解(其他STM32系列芯片大多數都可以按照這些步驟來操作

    2024年01月17日
    瀏覽(96)
  • USART HMI串口屏+單片機通訊上手體驗

    USART HMI串口屏+單片機通訊上手體驗

    ??本文采用淘晶馳4.3寸IPS串口屏實物驗證,HMI串口屏經簡單配置即可快速實現,串口通訊效果。串口屏上手簡單,有獨立的開發(fā)套件,容易上手,驅動顯示和功能代碼獨立。本文僅針對串口調試信息顯示實現做介紹,不涉及復雜功能實現。 ??打印輸出效果: ??模擬類似于

    2024年02月03日
    瀏覽(23)
  • 單片機第三季-第一課:STM32基礎

    單片機第三季-第一課:STM32基礎

    STM32系列分類: 型號命名原則: STM32F103系列: 涉及到的幾個概念: DMA:Direct Memory Access,直接存儲器訪問。DMA傳輸將數據從一個地址空間復制到另一個地址空間,提供外設和存儲器或存儲器和存儲器之間的高速數據傳輸; 2.0到3.6V供電,IO口可以兼容5V電壓; 與51單片機不同

    2024年02月09日
    瀏覽(20)
  • 單片機第三季-第七課:STM32中斷體系

    單片機第三季-第七課:STM32中斷體系

    目錄 1,NVIC 2,中斷和事件的區(qū)別 3,優(yōu)先級的概念? 4,如何實際編程使用外部中斷 5,STM32開發(fā)板通過按鍵控制LED? 5.1,打開相應GPIO模塊時鐘 5.2,NVIC設置 5.3,外部中斷線和配套的GPIO進行連接映射 5.4,代碼文件? 6,FSMC NVIC: Nested Vector Interrupt Control,嵌套向量中斷控制器;

    2024年01月18日
    瀏覽(32)
  • 【STM32】單片機模式配置&FlyMcu串口下載固件&STLINK Utility

    【STM32】單片機模式配置&FlyMcu串口下載固件&STLINK Utility

    目錄 1 單片機模式配置 1.1 存儲器映像 1.2 啟動配置 1.3 啟動模式選擇 1.4?硬件展示 1.4.1 BOOT引腳配置: 1.4.2 USB轉TTL 2 FlyMcu串口下載固件 ????????2.1軟件配置方式 ????????2.2 選項字節(jié) 3 STLINK Utility 3.1 簡介 3.2 下載程序流程 通過 設置選擇管腳 ,對應到各種啟動模式的不

    2024年01月20日
    瀏覽(94)
  • 基于STM32單片機BOOTLOADER通過串口升級程序IAP——APP方案

    基于STM32單片機BOOTLOADER通過串口升級程序IAP——APP方案

    ????????????????????????此方法前提是你得有一個EEPROM ? ? ? ? 我用的單片機是STM32F103ZET6 , 此單片機FLASH容量為512KB; 在此單片機里面FLASH的起始地址是0X8000000,BOOT作為引導加載程序一般都是從這個地址開始,單片機一上點默認會從這個地址開始運行,所以將自己

    2024年02月04日
    瀏覽(96)
  • 使用DMA傳輸實現單片機高效串口轉發(fā)——以STM32系列為例

    使用DMA傳輸實現單片機高效串口轉發(fā)——以STM32系列為例

    Date Author Version Note 2023.08.06 Dog Tao V1.0 1. 完成了文檔的撰寫。 2023.08.23 Dog Tao V1.1 1. 增加了STM32F103-USART2的DMA傳輸配置示例。 2. 增加了STM32F103與F407單片機的DMA控制器介紹并更改了第一章節(jié)的結構。 應用場景 在許多現實應用場景中,例如工業(yè)自動化控制、嵌入式通信設備等領域,

    2024年02月14日
    瀏覽(91)
  • STM32+ESP-01s+EMQX實現單片機MQTT協議傳輸數據上云(二)STM32F103與ESP-01s的Usart通信,實現STM32連接上網上云

    STM32+ESP-01s+EMQX實現單片機MQTT協議傳輸數據上云(二)STM32F103與ESP-01s的Usart通信,實現STM32連接上網上云

    單片機:STM32F103c8t6 WiFi模塊:ESP8266-01s EMQX:自身服務器上搭載emq服務器或者借用emqx window 版本? USB TO TTL模塊:CH340 因為CH340不能給ESP-01s供3.3V的電,所以測試時需要外加供電 ? ? ? ? ? 本章中涉及到的技術原理主要為ESP01S wfi模塊的AT指令通信,我在上一篇文章給大家提到了

    2024年02月16日
    瀏覽(26)
  • K_A19_002 基于STM32等單片機采集水位檢測傳感數據 串口與OLED0.96雙顯示

    K_A19_002 基于STM32等單片機采集水位檢測傳感數據 串口與OLED0.96雙顯示

    單片機型號 測試條件 模塊名稱 代碼功能 STC89C52RC 晶振11.0592M 水位檢測傳感模塊 STC89C52RC驅動水位檢測傳感模塊 串口與OLED0.96雙顯示 STM32F103C8T6 晶振8M/系統時鐘72M 水位檢測傳感模塊 STM32F103C8T6驅動水位檢測傳感模塊參數 串口與OLED0.96雙顯示 其他資料目錄 直戳跳轉 工作電壓:

    2024年02月07日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包