找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 10413|回復(fù): 18
打印 上一主題 下一主題
收起左側(cè)

基于stm32發(fā)送串口指令控制LED,蜂鳴器等(串口助手+原理圖+顯示結(jié)果)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
///2019 6 12 更新 加入 :串口助手截圖 簡(jiǎn)易問(wèn)題說(shuō)明
///2019 6 11 更新  加入 :  使用的串口調(diào)試助手是  XCOM2.0
///關(guān)于直接下載代碼后發(fā)送相關(guān)指令 開(kāi)發(fā)板無(wú)響應(yīng)的問(wèn)題簡(jiǎn)易說(shuō)明:(1)查看原理圖,看LED和BEEP的IO口是否與本源程序?qū)?yīng),如果不對(duì)應(yīng),請(qǐng)修改相關(guān)C或H文件;(2)查看波特率,停止位,奇偶校驗(yàn)位等設(shè)置是否正確
///說(shuō)明, 本人小白一枚,最近學(xué)習(xí)用正點(diǎn)原子戰(zhàn)艦V3學(xué)習(xí)32 ,恰好學(xué)習(xí)到串口這一段,想尋找相關(guān)以指令控制元件的代碼,可惜良莠不齊,以下源碼是偶基于網(wǎng)上一些前輩版本修改而來(lái),已經(jīng)完全實(shí)現(xiàn)用漢字指令控制LED 與BEEP,最近正在啃短信控制LED.目前源碼、原理圖已經(jīng)全部上傳。若有問(wèn)題 敬請(qǐng)指正




   

//芯片:stm32F103ze  軟件:KEIL5 XCOM2.0
硬件:串口1中 RXD與PA9  TXD與PA10相連接 其余不用變動(dòng)


#include "sys.h"        
#include "delay.h"        
#include "led.h"   
#include "usart.h"
#include "string.h"
#include "beep.h"

char c[200]; //定義一個(gè)長(zhǎng)度為200的字符串為c

int main(void)
{
u8 z;
u8 t=0;        
u8 L;
u8 m=0;
u8 h=0;               
delay_init();
LED_Init();
BEEP_Init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
while(1)
{
                if(USART_RX_STA&0x8000)
                {
                    L=USART_RX_STA&0x3FFF;
                                        printf("\r\n執(zhí)行的命令為:\r\n\r\n\r\n");
                    for(z=0;z<L;z++)
                    {
                                 c[z]=USART_RX_BUF[z];
                                USART_SendData(USART1, USART_RX_BUF[z]);//可顯示向串口1發(fā)送的指令
                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待發(fā)送結(jié)束
                     }

                                USART_RX_STA=0;         
                                USART_ClearFlag(USART1, USART_FLAG_RXNE);
                                if(!(strcmp(c,"打開(kāi)LED1")))                 
                                {
                                                LED1=0;                                                                        
                                                memset(c,0,200);//將0填充進(jìn)c指向的200字節(jié)內(nèi)存,也就是清零
                                                                                                    //執(zhí)行不了的情況
                                }
                                                                if(!(strcmp(c,"打開(kāi)LED0")))
                                {
                                                LED0=0;                                                                        
                                                memset(c,0,200);  
                                }
                                if(!(strcmp(c,"打開(kāi)蜂鳴器")))
                                {
                                                BEEP=1;                                                                        
                                                memset(c,0,200);
                                }                                                                 
                                                                 if(!(strcmp(c,"關(guān)閉LED1")))
                                {
                                                LED1=1;
                                                memset(c,0,200);
                                 }                                                                        
                                if(!(strcmp(c,"關(guān)閉LED0")))
                                {
                                                LED0=1;
                                                memset(c,0,200);
                                }
                                                                if(!(strcmp(c,"關(guān)閉蜂鳴器")))
                                {
                                                BEEP=0;                                                                        
                                                memset(c,0,200);
                                }         
                                                                if(!(strcmp(c,"打開(kāi)所有LED")))
                                {
                                                LED0=0;
                                                                                    LED1=0;
                                                memset(c,0,200);
                                                                }
                                 if(!(strcmp(c,"關(guān)閉所有LED")))
                                {
                                                LED0=1;
                                                                                    LED1=1;
                                                memset(c,0,200);
                                }

                }
                                else
                                {        
                     printf(" \r\n %d時(shí)%d分%d秒 \r\n",h,m,t);                                       
                                        delay_ms(1000);
                                     t++;
                                        if(t%60==0)
                                        {
                                                m=t/60+m;
                                                if(m%60==0)
                                                {
                                                        h=m/60+h;
                                        printf(" \r\n %d時(shí)%d分%d秒 \r\n",m,t,h);
                                                        m=0;
                                                }
                                        else         printf(" \r\n %d時(shí)%d分%d秒 \r\n",h,t,m);
                                                     t=0;
                                        }
                                          
                                }
}
}

全部資料51hei下載地址:
usart.7z (185.89 KB, 下載次數(shù): 262)



評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:558088 發(fā)表于 2019-6-10 17:59 | 只看該作者
請(qǐng)問(wèn)一下能控制什么嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:558088 發(fā)表于 2019-6-10 18:00 | 只看該作者
你好 你發(fā)的那個(gè)程序 是控制什么的能跟我說(shuō)一下嘛 我下載了還在研究 剛剛學(xué)不懂
回復(fù)

使用道具 舉報(bào)

地板
ID:558088 發(fā)表于 2019-6-10 18:36 | 只看該作者
樓主在嗎 學(xué)習(xí)下
回復(fù)

使用道具 舉報(bào)

5#
ID:536427 發(fā)表于 2019-6-11 08:44 | 只看該作者
dididi1313 發(fā)表于 2019-6-10 18:00
你好 你發(fā)的那個(gè)程序 是控制什么的能跟我說(shuō)一下嘛 我下載了還在研究 剛剛學(xué)不懂

控制led 蜂鳴器 當(dāng)沒(méi)有指令時(shí) 就是一個(gè)時(shí)鐘,持續(xù)向串口發(fā)送時(shí)分秒
回復(fù)

使用道具 舉報(bào)

6#
ID:558088 發(fā)表于 2019-6-11 10:21 | 只看該作者
我累個(gè)去啊啊啊 發(fā)表于 2019-6-11 08:44
控制led 蜂鳴器 當(dāng)沒(méi)有指令時(shí) 就是一個(gè)時(shí)鐘,持續(xù)向串口發(fā)送時(shí)分秒

我想問(wèn)一下哪個(gè)是串口的程序 有什么用 我還沒(méi)學(xué)過(guò)這個(gè)
回復(fù)

使用道具 舉報(bào)

7#
ID:536427 發(fā)表于 2019-6-11 17:04 | 只看該作者
dididi1313 發(fā)表于 2019-6-11 10:21
我想問(wèn)一下哪個(gè)是串口的程序 有什么用 我還沒(méi)學(xué)過(guò)這個(gè)

USART.c    USART.h 就是串口程序
回復(fù)

使用道具 舉報(bào)

8#
ID:558088 發(fā)表于 2019-6-11 17:12 | 只看該作者
串口那個(gè)助手輸入 然后不能輸出啊
回復(fù)

使用道具 舉報(bào)

9#
ID:558088 發(fā)表于 2019-6-11 20:02 | 只看該作者
我研究了一下午 然后現(xiàn)在能運(yùn)行了 但是按鈕怎么改也調(diào)不了時(shí)間 蜂鳴器 燈也不亮
回復(fù)

使用道具 舉報(bào)

10#
ID:536427 發(fā)表于 2019-6-12 16:09 | 只看該作者
dididi1313 發(fā)表于 2019-6-11 20:02
我研究了一下午 然后現(xiàn)在能運(yùn)行了 但是按鈕怎么改也調(diào)不了時(shí)間 蜂鳴器 燈也不亮

已私信
回復(fù)

使用道具 舉報(bào)

11#
ID:535196 發(fā)表于 2019-6-12 22:38 | 只看該作者
小白想問(wèn)一下STM32用什么編程軟件比較好,KEIL4好像不可以用32
回復(fù)

使用道具 舉報(bào)

12#
ID:417845 發(fā)表于 2019-6-13 09:45 | 只看該作者
樓主,我的開(kāi)發(fā)板是STM32f407的,下載后編譯沒(méi)有問(wèn)題,但串口輸入沒(méi)顯示
回復(fù)

使用道具 舉報(bào)

13#
ID:536427 發(fā)表于 2019-6-16 20:05 | 只看該作者
孤夜之舞 發(fā)表于 2019-6-12 22:38
小白想問(wèn)一下STM32用什么編程軟件比較好,KEIL4好像不可以用32

同小白~  我用的keil5 沒(méi)用KEIL4 不知是不是你的魔法棒是否設(shè)置有問(wèn)題  一般Keil5都可以向下兼容的
回復(fù)

使用道具 舉報(bào)

14#
ID:536427 發(fā)表于 2019-6-16 20:08 | 只看該作者
jhv 發(fā)表于 2019-6-13 09:45
樓主,我的開(kāi)發(fā)板是STM32f407的,下載后編譯沒(méi)有問(wèn)題,但串口輸入沒(méi)顯示

協(xié)議一致嗎?   是否IO口配置有問(wèn)題
回復(fù)

使用道具 舉報(bào)

15#
ID:430698 發(fā)表于 2019-6-19 13:45 | 只看該作者
好資料 學(xué)習(xí)中
回復(fù)

使用道具 舉報(bào)

16#
ID:617502 發(fā)表于 2019-9-28 11:04 | 只看該作者
不錯(cuò)  謝謝樓主
回復(fù)

使用道具 舉報(bào)

17#
ID:660142 發(fā)表于 2019-12-13 13:26 來(lái)自手機(jī) | 只看該作者
我的也是戰(zhàn)艦v3的板子確實(shí)能用,最近也在學(xué)串口,非常感謝樓主的程序
回復(fù)

使用道具 舉報(bào)

18#
ID:763690 發(fā)表于 2020-5-28 19:24 | 只看該作者
感謝樓主分享!很好的資源
回復(fù)

使用道具 舉報(bào)

19#
ID:840806 發(fā)表于 2020-11-9 08:42 | 只看該作者
孤夜之舞 發(fā)表于 2019-6-12 22:38
小白想問(wèn)一下STM32用什么編程軟件比較好,KEIL4好像不可以用32

我用的Keil uVision5
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表