步驟1:軟件和硬件要求
在硬件方面,您需要:
STM32F4發(fā)現(xiàn)板(或其他任何STM32板)
在軟件方面:
STM32CubeMX
Keil uVision5
已安裝串行庫的Python
步驟2:STM32CubeMX配置
首先讓我們了解我們想要做什么。我們希望通過USART從Python將數(shù)據(jù)傳輸?shù)桨迳希z查是否有正確的數(shù)據(jù)并切換LED。因此,我們需要啟用USART和Led。
從“連接性”選項卡中啟用USART2。
將模式更改為異步
波特率更改為9600 Bits/s
無奇偶校驗的字長為8位
無奇偶校驗位
從DMA設置中以特殊模式添加USART2_RX
從NVIC設置中啟用USART2全局中斷
然后生成代碼:)
通過單擊PD12啟用LED
步驟3:Keil軟件開發(fā)
#include
#include
在字符串操作和定義布爾變量時將需要這些庫。
/* 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,當我們得到一個字節(jié)的字符時,它被激活。所以。我們得到該字節(jié)并將其寫入包含完整接收數(shù)據(jù)的data_full,直到得到‘\ n’。當我們得到‘\ n’時,我們使完成標志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 */
}
如果完成標志為HIGH,我們將比較完整接收的數(shù)據(jù)和我們想要的數(shù)據(jù)的內(nèi)容,如果它們是等于我們切換領導。之后,我們清除完成標志,等待新數(shù)據(jù),并清除data_full數(shù)組,以免覆蓋該數(shù)組。
步驟4:Python軟件開發(fā)
因此,這里我們要在結尾處發(fā)送帶有‘/n’的數(shù)字,因為Keil軟件需要查看它才能知道結尾。
import serial
ser = serial.Serial(‘COM17’) #check that port on your device from Device Manager
ser.write(b‘24 ’)
您應該看到每次您發(fā)送“ 24 \ n”時,LED都會切換。如果您發(fā)送其他任何內(nèi)容,它都不會影響它。
-
mcu
+關注
關注
146文章
17841瀏覽量
360508 -
USART
+關注
關注
1文章
200瀏覽量
31630 -
python
+關注
關注
56文章
4825瀏覽量
86196 -
STM32F4
+關注
關注
3文章
196瀏覽量
28831
發(fā)布評論請先 登錄
STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
Analog Devices Inc. MAX32675C超低功耗Arm? Cortex?-M4F MCU數(shù)據(jù)手冊


使用SPI進行通信,STM32F4做從機,通信時數(shù)據(jù)異常怎么解決?
Arduino中可以使用STM32F1或者STM32F4系列芯片的內(nèi)置看門狗嗎?
使用STM32F4的ADC的時候,發(fā)現(xiàn)測量結果不準確,是什么原因導致的?
stm32f4 sdio時鐘如何獲取通過什么函數(shù)?
MAX32675C超低功耗Arm? Cortex?-M4F MCU

STM32項目實戰(zhàn):基于STM32F4的智能大棚溫控系統(tǒng)(LVGL),附項目教程/源碼

基于STM32F4的集中潤滑系統(tǒng)的設計

STM32項目實戰(zhàn):基于STM32F4的智能燈光控制系統(tǒng)(LVGL),附項目教程/源碼

【GD32 MCU 移植教程】9、從 STM32F10x 系列移植到 GD32F30x 系列

【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

評論