Arduino下的STM32的串列埠通訊
Arduino下的STM32的串列埠通訊
一、任務要求
1)持續向串列埠輸出“Hello world!”;
2)當接收到“stop!”時,停止輸出。
二、Arduino的安裝和配置
1、安裝Ardunio
連結: 安裝包.提取碼:q251
注:安裝的時候,一直預設安裝就可以了,安裝的路徑不能有中文。
2、配置Arduino
1、將安裝包裡的Arduino_STM32整個資料夾拷貝到Arduino安裝目錄下的hareware下。
2、開啟Arduino,點選選單欄\工具\開發板…\第一欄的開發板管理器
3、選中Cortex-M3系列的編譯支援檔案並安裝
注:安裝時間比較長,請耐心等待。
4、安裝完成後,在選單欄\工具\開發板選擇晶片型別,由於我使用的是stm32f103指南者,所以選擇為Generic STM32F103V series。
5、按照下列圖片所示,修改。
三、程式
1、連線stm32的開發板
直接用usb線把開發板與電腦相連即可。然後用跳帽將BOOT0與3v3相連,BOOT1與GND相連,RXD與A9相連,TXD與A10相連。
注:usb線連線的開發板的"usb轉串列埠"這個介面。
2、編輯程式碼
int flag=1;
char Stop[]="stop\n"; //停止命令
char Start[]="begin\n"; //開始命令
void setup()
{
Serial.begin(115200); //串列埠初始化
}
void loop()
{
int i=0,flag_s=0,flag_s1=0;
char inByte[50];
while (Serial.available()> 0) //當傳送緩衝區有資料時
{
inByte[i] = Serial.read(); //從串列埠的緩衝區取出並讀取一個Byte的資料
delay(10);
if(Stop[i]!=inByte[i]) //判斷髮送資料是否與停止命令相等
flag_s=0;
else flag_s=1;
if(Start[i]!=inByte[i]) //判斷髮送資料是否與開始命令相等
flag_s1=0;
else flag_s1=1;
i++;
}
if(flag_s==1) //如果與停止命令相等
{
flag=0; //傳送標誌位置為0
Serial.println("收到!已停止傳送");
flag_s=0; //初始化判斷,防止沒有傳送資料時一直執行
}
if (flag==1) //判斷髮送標誌位是否為1
{
Serial.println("Hello World!");
delay(1000);
}
}
3、燒錄程式
1、選擇連線的串列埠
2、依次點選驗證,燒錄
注:每一次在燒錄檔案之前,要按開發板上的RESET,否則可能會出現問題。
3、開啟串列埠監視器(此時小燈開始閃爍)
注:波特率記得改成115200。
在這裡插入圖片描述
4、執行結果
四、分析基於標準庫函式與基於HAL庫函式的stm32程式設計方式的差異
1、標準庫是對STM32晶片的一個完整的封裝,包括所有標準器件外設的器件驅動器,可以讓我們寫程式碼時更簡潔。
2、HAL庫是隻要使用的是相通的外設,程式基本可以完全複製貼上。注意是相通外設,意思也就是不能無中生有,例如F7比F3要多幾個定時器,不能明明沒有這個定時器卻非要配置,但其實這種情況不多,絕大多數都可以直接複製貼上。
注:也就是說標準外設庫有時需要用幾行程式碼完成的,HAL庫一行程式碼就可以完成。
五、stduino IDE的使用體會
1、Stduino IDE是一款面向32位處理器快速入門學習的整合開發平臺,目前已經支援Arduino_Core_STM32框架,集聚快捷、高效、免費、開源、易得於一身,軟體還整合了GDB除錯功能。
支援自定義編輯背景;程式碼高亮;程式碼自動提示補全;—鍵USB\Stlink下載;支援串列埠除錯
2、stduino的操作介面簡潔乾淨,操作便捷,程式編寫簡單,不需要太多的微控制器基礎和程式設計基礎,自帶程式燒錄,自帶串列埠除錯。
六、總結
Ardunio極易掌握,同時有著足夠的靈活性。不需要太多的微控制器基礎、程式設計基礎,簡單學習後,可以快速的進行開發,自帶程式燒錄,自帶串列埠除錯,軟體介面簡潔。就是在下載開發板配置的時候。比較慢,多耐心等一等。
參考文獻
連結: 在Arduino完成STM32的串列埠通訊.
連結: 基於Ardunio下的stm32f103指南者串列埠通訊.
連結: 使用Arduino IDE開發STM32F10X.
相關文章
- STM32串列埠通訊串列埠
- .NET Compact Framework下的串列埠通訊Framework串列埠
- 初步使用Ardunio IDE實現STM32的串列埠通訊IDE串列埠
- 串列埠通訊串列埠
- Linux下串列埠通訊詳解(下)讀寫串列埠及關閉串列埠Linux串列埠
- ROS環境下串列埠通訊ROS串列埠
- 串列埠通訊 (轉)串列埠
- VC++ 的串列埠通訊 (轉)C++串列埠
- 詳解linux下的串列埠通訊開發Linux串列埠
- 【STM32】串列埠串列埠
- linux 串列埠通訊Linux串列埠
- 串列埠通訊協議串列埠協議
- Android 串列埠通訊Android串列埠
- C# 串列埠通訊C#串列埠
- 11. 串列埠通訊串列埠
- 串列埠通訊型別串列埠型別
- (10)uart串列埠通訊串列埠
- C#串列埠通訊遇到的坑C#串列埠
- 通過串列埠進行通訊 :串列埠
- 串列埠資料抓取及串列埠通訊模擬串列埠
- 國內的 Stduino IDE 基於 STM32 的串列埠通訊與 LED 燈閃爍UIIDE串列埠
- 安卓串列埠通訊疑問安卓串列埠
- java串列埠通訊例項 -Java串列埠
- VC++ 串列埠通訊(轉)C++串列埠
- 串列埠無法正常通訊串列埠
- 【嵌入式系統】STM32串列埠通訊的四種方法(基於RTOS)串列埠
- AndroidSerialPort:安卓串列埠通訊庫Android安卓串列埠
- 串列埠通訊gui介面顯示串列埠GUI
- Android藍芽串列埠通訊Android藍芽串列埠
- 小型plc串列埠通訊簡介串列埠
- 串列埠通訊應用程式的解決方案 (轉)串列埠
- 基於WebSocket的modbus通訊(三)- websocket和串列埠Web串列埠
- STM32 串列埠功能詳解串列埠
- android ndk 虛擬串列埠通訊Android串列埠
- C#串列埠通訊程式SerialPort類C#串列埠
- 用VB除錯串列埠通訊 (轉)除錯串列埠
- STM32串列埠列印的那些知識串列埠
- AVR 微控制器串列埠和網口的通訊VR串列埠