久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2294|回復: 4
打印 上一主題 下一主題
收起左側

求STM32串口+按鍵一起用的狀態機

[復制鏈接]
跳轉到指定樓層
樓主
ID:101305 發表于 2023-6-26 11:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
跪求STM32串口+按鍵一起用的狀態機,最好有注釋的,方便移植的,本人小白請多多關照
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:123289 發表于 2023-6-26 17:18 | 只看該作者
狀態機長什么樣子?
回復

使用道具 舉報

板凳
ID:404160 發表于 2023-6-26 17:22 | 只看該作者
以下是一個使用狀態機來處理STM32串口和按鍵同時使用的示例代碼,注釋已添加在代碼中:```c#include "stm32f4xx.h"// 定義狀態機的狀態typedef enum {    STATE_IDLE,     // 空閑狀態    STATE_RECEIVING // 接收狀態} State;// 定義按鍵狀態typedef enum {    BUTTON_RELEASED, // 按鍵釋放狀態    BUTTON_PRESSED   // 按鍵按下狀態} ButtonState;State currentState = STATE_IDLE;       // 當前狀態ButtonState buttonState = BUTTON_RELEASED; // 按鍵狀態uint8_t receivedData;// 按鍵初始化void buttonInit(void) {    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);    GPIO_InitTypeDef GPIO_InitStruct;    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP;    GPIO_Init(GPIOA, &GPIO_InitStruct);}// 串口初始化void uartInit(void) {    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);    GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);    GPIO_InitTypeDef GPIO_InitStruct;    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF;    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;    GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;    GPIO_Init(GPIOA, &GPIO_InitStruct);    USART_InitTypeDef USART_InitStruct;    USART_InitStruct.USART_BaudRate = 9600;    USART_InitStruct.USART_WordLength = USART_WordLength_8b;    USART_InitStruct.USART_StopBits = USART_StopBits_1;    USART_InitStruct.USART_Parity = USART_Parity_No;    USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;    USART_InitStruct.USART_Mode = USART_Mode_Rx;    USART_Init(USART2, &USART_InitStruct);    USART_Cmd(USART2, ENABLE);}// 處理當前狀態void handleState(void) {    switch (currentState) {        case STATE_IDLE:            // 空閑狀態,等待按鍵按下            if (buttonState == BUTTON_PRESSED) {                currentState = STATE_RECEIVING;            }            break;        case STATE_RECEIVING:            // 接收狀態,等待接收到數據            if (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) {                receivedData = USART_ReceiveData(USART2);                // 處理接收到的數據                // ...                currentState = STATE_IDLE;            }            break;    }}int main(void) {    buttonInit();    uartInit();    while (1) {        // 讀取按鍵狀態        if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == RESET) {            buttonState = BUTTON_PRESSED;        } else {            buttonState = BUTTON_RELEASED;        }        // 處理當前狀態        handleState();    }}```希望這可以幫助你開始使用狀態機處理STM32串口和按鍵的操作。請注意,你可能需要根據你的具體應用場景進行適當的修改和調整。
回復

使用道具 舉報

地板
ID:101305 發表于 2023-7-4 06:30 | 只看該作者
大神你這代碼讓人暈啊,能不能給個完整一點的,謝謝了
回復

使用道具 舉報

5#
ID:1087086 發表于 2023-7-5 14:04 | 只看該作者
如果用Labview來寫比較簡單,選擇串口號,按鍵實現切換狀態,用選擇結構和while結構
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色偷偷888欧美精品久久久 | 免费观看av网站 | a国产视频| 日韩精品一区二区三区 | 动漫www.被爆羞羞av44 | 香蕉视频1024 | 国产日韩久久 | 亚洲精品视频免费观看 | 亚洲精品免费视频 | 最新国产精品精品视频 | 亚洲精品永久免费 | 亚洲精品在 | 欧美一区二区三区精品免费 | 性色av香蕉一区二区 | 亚洲精品视频免费看 | 日韩成人在线网站 | 91精品国产91久久久久久丝袜 | 91精品国产一区二区三区香蕉 | 精品一区久久 | 久久久久av | 久久免费视频1 | 国产1区在线 | 免费国产视频在线观看 | 一区二区在线 | 日韩欧美国产一区二区 | 欧美综合久久 | 欧美成人一区二区三区 | 亚洲精品av在线 | 中文字幕一区二区三区在线观看 | 波多野结衣av中文字幕 | 久久久久久91 | 国产精品久久久 | 成人亚洲精品 | 久久精品一 | 精品久久久久香蕉网 | 亚洲在线一区二区 | 久久久久99 | 国产99久久精品一区二区永久免费 | 亚洲一区视频 | 在线天堂免费中文字幕视频 | 九色91视频 |