步驟1:軟件和硬件要求
在硬件方面,您需要:
STM32F4發(fā)現(xiàn)板(或其他任何STM32板)
USB轉(zhuǎn)TTL轉(zhuǎn)換器
在軟件方面:
STM32CubeMX
Keil uVision5
已安裝串行庫(kù)的Python
步驟2:STM32CubeMX配置
首先讓我們了解我們想要做什么。我們希望通過(guò)USART從Python將數(shù)據(jù)傳輸?shù)桨迳希z查是否有正確的數(shù)據(jù)并切換LED。因此,我們需要啟用USART和Led。
從“連接性”選項(xiàng)卡中啟用USART2。
將模式更改為異步
波特率更改為9600 Bits/s
無(wú)奇偶校驗(yàn)的字長(zhǎng)為8位
無(wú)奇偶校驗(yàn)位
從DMA設(shè)置中以特殊模式添加USART2_RX
從NVIC設(shè)置中啟用USART2全局中斷
然后生成代碼:)
通過(guò)單擊PD12啟用LED
步驟3:Keil軟件開發(fā)
#include
#include
在字符串操作和定義布爾變量時(shí)將需要這些庫(kù)。
/* USER CODE BEGIN 2 */
HAL_UART_Receive_DMA(&huart2, (uint8_t *) data_buffer, 1);
/* USER CODE END 2 */
此處,UART
/* USER CODE BEGIN 4 */
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE: This function should not be modified, when the callback is needed,
the HAL_UART_RxCpltCallback could be implemented in the user file
*/
if(data_buffer[0] != ‘ ’){
data_full[index_] = data_buffer[0];
index_++;
}else{
index_ = 0;
finished = 1;
}
//HAL_UART_Transmit(&huart2, data_buffer, 1, 10);
}
/* USER CODE END 4 */
這是ISR,當(dāng)我們得到一個(gè)字節(jié)的字符時(shí),它被激活。所以。我們得到該字節(jié)并將其寫入包含完整接收數(shù)據(jù)的data_full,直到得到‘\ n’。當(dāng)我們得到‘\ n’時(shí),我們使完成標(biāo)志1并在while循環(huán)中:
while (1)
{
/* USER CODE END WHILE */
if(finished){
if(strcmp(data_full, cmp_) == 0){
HAL_GPIO_TogglePin(GPIOD, GPIO_PIN_12);
}
memset(data_full,‘’,strlen(data_full));
finished = 0;
}else{
__NOP ();
}
/* USER CODE BEGIN 3 */
}
如果完成標(biāo)志為HIGH,我們將比較完整接收的數(shù)據(jù)和我們想要的數(shù)據(jù)的內(nèi)容,如果它們是等于我們切換領(lǐng)導(dǎo)。之后,我們清除完成標(biāo)志,等待新數(shù)據(jù),并清除data_full數(shù)組,以免覆蓋該數(shù)組。
步驟4:Python軟件開發(fā)
因此,這里我們要在結(jié)尾處發(fā)送帶有‘/n’的數(shù)字,因?yàn)镵eil軟件需要查看它才能知道結(jié)尾。
import serial
ser = serial.Serial(‘COM17’) #check that port on your device from Device Manager
ser.write(b‘24 ’)
您應(yīng)該看到每次您發(fā)送“ 24 \ n”時(shí),LED都會(huì)切換。如果您發(fā)送其他任何內(nèi)容,它都不會(huì)影響它。
-
mcu
+關(guān)注
關(guān)注
146文章
17196瀏覽量
351887 -
USART
+關(guān)注
關(guān)注
1文章
195瀏覽量
30909 -
python
+關(guān)注
關(guān)注
56文章
4801瀏覽量
84852 -
STM32F4
+關(guān)注
關(guān)注
3文章
194瀏覽量
28104
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于STM32F4的集中潤(rùn)滑系統(tǒng)的設(shè)計(jì)
![基于<b class='flag-5'>STM32F4</b>的集中潤(rùn)滑系統(tǒng)的設(shè)計(jì)](https://file.elecfans.com/web2/M00/40/03/pYYBAGJrSWqAb-nSAAAXmKtCFeo833.jpg)
STM32項(xiàng)目實(shí)戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼
![<b class='flag-5'>STM32</b>項(xiàng)目實(shí)戰(zhàn):基于<b class='flag-5'>STM32F4</b>的智能燈光控制系統(tǒng)(LVGL),附項(xiàng)目教程/源碼](https://file1.elecfans.com/web2/M00/0A/99/wKgaomcQx7-ANGIzAADQCHA0gz0430.png)
【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列
![【GD32 <b class='flag-5'>MCU</b> 移植教程】9、從 <b class='flag-5'>STM32F</b>10x 系列移植到 GD32<b class='flag-5'>F</b>30x 系列](https://file1.elecfans.com/web2/M00/04/DF/wKgZombVHYWASdt6AAA4EF8E1O4442.png)
【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系
![【GD32 <b class='flag-5'>MCU</b> 移植教程】8、從 <b class='flag-5'>STM32F4</b>xx 系列移植到 GD32<b class='flag-5'>F4</b>xx 系](https://file1.elecfans.com/web2/M00/06/61/wKgaombaXZ6AB4PtAABI6uZ03C4508.png)
評(píng)論