日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2024年09月11日(星期三)

正在發(fā)生

2019年09月11日 | 一種STM32的串口控制臺(tái)的實(shí)現(xiàn)

發(fā)布者:數(shù)字思維 來源: eefocus關(guān)鍵字:STM32  串口控制臺(tái)  Linux 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一.背景

曾經(jīng)玩Linux時(shí)非常喜歡這種基于出串口的控制臺(tái), 通過簡(jiǎn)單的串口TX和RX能實(shí)現(xiàn)嵌入式硬件的人機(jī)交互,非常實(shí)用,  那么STM32能否實(shí)現(xiàn)通過超級(jí)終端與用戶互動(dòng)的構(gòu)想呢? 答案是肯定的,由于這個(gè)UART控制平臺(tái)就像應(yīng)用程序套上一層可訪問的外科(Shell)故而我將這種基于UART的控制平臺(tái)簡(jiǎn)稱Shell,構(gòu)架和效果如下圖:



這張圖箭頭指向的是輸入的指令,其余是STM32串口輸出的信息,, 可以看到通過這些簡(jiǎn)單的指令輸入我們通過Shell可以做很多事情:


1. 現(xiàn)場(chǎng)設(shè)備發(fā)生故障,可以通過Shell可以查看設(shè)備的故障狀態(tài)統(tǒng)計(jì)信息


2. 能實(shí)現(xiàn)串口程序升級(jí)(需要Shell+IAP驅(qū)動(dòng)程序支持)


3. 能讀寫訪問參數(shù)區(qū),實(shí)現(xiàn)對(duì)設(shè)備參數(shù)的本地配置


4. 配置多功能信號(hào)指示燈(LED燈可顯示65535種信號(hào),同一時(shí)刻只能顯示一個(gè).


5. 程序開發(fā)階段基于Shell,可以極其方便的調(diào)試編寫的驅(qū)動(dòng)程序(開發(fā)極力推薦),非常好用.




二.Shell基礎(chǔ)篇

Shell基礎(chǔ)程序只有三個(gè)文件:


console.h:用于定義STM32用于Shell的實(shí)體串口


shell.cshell平臺(tái)實(shí)現(xiàn)主體


shell.h頭文件,任意的驅(qū)動(dòng)文件可調(diào)用,就像一樣




shell.c目前包含三個(gè)部件:


shell模塊(必選)Shell模塊初始化時(shí)已初始化好Led模塊


Led模塊(必選)Ledx_on(x),Ledx_off(x),Ledx_div(x),函數(shù)是對(duì)編碼信號(hào)進(jìn)行控制,而不是直接對(duì)硬件實(shí)體控制,這樣每個(gè)LED實(shí)體就像通道一樣可以選擇非常多的信號(hào)源顯示.


精密延時(shí)模塊(可選)啟動(dòng)需要對(duì)其初始化,此模塊可用于記錄時(shí)間點(diǎn),并判斷時(shí)間是否到(再也不用Delayms()這樣的函數(shù)浪費(fèi)效率實(shí)現(xiàn)時(shí)序了.




三. 程序文件:

1. console.h

/*********************************Copyright (c)*********************************

**                               

**                                 FIVE工作組

**

**---------------------------------File Info------------------------------------

** File Name:               shell_hal.h

** Last modified Date:      2014/5/26 14:22:35

** Last Version:            V1.0  

** Description:             本地Shell文件接口

**

**------------------------------------------------------------------------------

** Created By:              wanxuncpx

** Created date:            2014/5/26 14:22:34

** Version:                 V2

** Descriptions:            只適合STM32程序

**------------------------------------------------------------------------------

** Libraries:               STM32F10x_StdPeriph_Driver

** version                  V3.5

*******************************************************************************/

 

/******************************************************************************

更新說明:

******************************************************************************/

 

/******************************************************************************

*********************************  應(yīng) 用 資 料 ********************************

******************************************************************************/

 

#ifndef _SHELL_HAL_

#define _SHELL_HAL_

/******************************************************************************

********************************* 文件引用部分 ********************************

******************************************************************************/

//包含庫文件

#include "stm32f10x.h"

#include "stm32f10x_gpio.h"

#include "stm32f10x_rcc.h"

#include "stm32f10x_tim.h"

 

/******************************************************************************

******************************** 可 配 置 參 數(shù) *******************************

******************************** MNCS_IMAGE圖像板 *****************************

******************************************************************************/

/*---------------------* 

*     UART端口配置

*----------------------*/

//IO配置

#define CONSOLE                 USART3 

#define CONSOLE_TX_PORT         GPIOB

#define CONSOLE_TX_PIN          GPIO_Pin_10

#define CONSOLE_RX_PORT         GPIOB

#define CONSOLE_RX_PIN          GPIO_Pin_11

 

//時(shí)鐘配置

#define CONSOLE_GPIO_RCC_INIT() RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE)

#define CONSOLE_UART_RCC_INIT() RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE)

 

//中斷優(yōu)先級(jí)

#define CONSOLE_UART_PRIO       7       //建議[0..15]

 

//中斷向量配置

#define CONSOLE_IRQn            USART3_IRQn;

#define CONSOLE_IRQHandler      USART3_IRQHandler

 

/*---------------------* 

*     四個(gè)LED定義

*----------------------*/

#define LED0_VALID              1           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED0_PORT               GPIOB

#define LED0_PIN                GPIO_Pin_13

 

#define LED1_VALID              1           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED1_PORT               GPIOB

#define LED1_PIN                GPIO_Pin_15

 

#define LED2_VALID              0           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED2_PORT               GPIOA

#define LED2_PIN                GPIO_Pin_11

 

#define LED3_VALID              0           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED3_PORT               GPIOA

#define LED3_PIN                GPIO_Pin_11

 

#define LED4_VALID              0           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED4_PORT               GPIOA

#define LED4_PIN                GPIO_Pin_11

 

#define LED5_VALID              0           //非零表示使能對(duì)應(yīng)的LED,0:無效

#define LED5_PORT               GPIOA

#define LED5_PIN                GPIO_Pin_11

 

/*---------------------* 

*        時(shí)基BASE

*----------------------*/

#define TIMEDly                 TIM4

#define TIMEDly_IRQn            TIM4_IRQn

#define TIMEDly_IRQHandler      TIM4_IRQHandler

 

//時(shí)鐘配置            

#define TIMEDly_RCC_INIT()      RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

 

//初始化LGPIO口

#define LEDx_GPIO_RCC_INIT()    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)

//------------------------------------------------------------------------------

 

/******************************************************************************

******************************* 以下參數(shù)無需更改 ******************************

******************************************************************************/

/*---------------------* 

*  注意以下區(qū)域無需用戶更改

*----------------------*/

#if LED0_VALID

  #define LED0_ON()             (LED0_PORT->BRR  = LED0_PIN)

  #define LED0_OFF()            (LED0_PORT->BSRR = LED0_PIN)

  #define LED0_DIV()            (LED0_PORT->ODR  ^= LED0_PIN)

#else

  #define LED0_ON()             __NOP()

  #define LED0_OFF()            __NOP()

  #define LED0_DIV()            __NOP()

#endif

 

#if LED1_VALID

  #define LED1_ON()             (LED1_PORT->BRR  = LED1_PIN)

  #define LED1_OFF()            (LED1_PORT->BSRR = LED1_PIN)

  #define LED1_DIV()            (LED1_PORT->ODR ^= LED1_PIN)

#else

  #define LED1_ON()             __NOP()

  #define LED1_OFF()            __NOP()

  #define LED1_DIV()            __NOP()

#endif 

 

#if LED2_VALID

  #define LED2_ON()             (LED2_PORT->BRR  = LED2_PIN)

  #define LED2_OFF()            (LED2_PORT->BSRR = LED2_PIN)

  #define LED2_DIV()            (LED2_PORT->ODR ^= LED2_PIN)

#else

  #define LED2_ON()             __NOP()

  #define LED2_OFF()            __NOP()

  #define LED2_DIV()            __NOP()

#endif  

 

#if LED3_VALID

  #define LED3_ON()             (LED3_PORT->BRR  = LED3_PIN)

  #define LED3_OFF()            (LED3_PORT->BSRR = LED3_PIN)

  #define LED3_DIV()            (LED3_PORT->ODR ^= LED3_PIN)

#else

  #define LED3_ON()             __NOP()

  #define LED3_OFF()            __NOP()

  #define LED3_DIV()            __NOP()

#endif

 

#if LED4_VALID

  #define LED4_ON()             (LED4_PORT->BSRR = LED4_PIN)

  #define LED4_OFF()            (LED4_PORT->BRR  = LED4_PIN)

  #define LED4_DIV()            (LED4_PORT->ODR ^= LED4_PIN)

#else

  #define LED4_ON()             __NOP()

  #define LED4_OFF()            __NOP()

  #define LED4_DIV()            __NOP()

#endif

 

#if LED5_VALID

  #define LED5_ON()             (LED5_PORT->BSRR = LED5_PIN)

  #define LED5_OFF()            (LED5_PORT->BRR  = LED5_PIN)

[1] [2] [3] [4] [5] [6] [7] [8]
關(guān)鍵字:STM32  串口控制臺(tái)  Linux 引用地址:一種STM32的串口控制臺(tái)的實(shí)現(xiàn)

上一篇:STM32的結(jié)構(gòu)和啟動(dòng)模式
下一篇:STM32F103C8T6 Standby低功耗模式

推薦閱讀

機(jī)器人產(chǎn)業(yè)已成為國際上最火熱的產(chǎn)業(yè)之一。近年來,全球機(jī)器人產(chǎn)業(yè)年均增長(zhǎng)速度始終保持在15%以上,2017年全球機(jī)器人產(chǎn)業(yè)規(guī)模已超過250億美元,增長(zhǎng)20.3%,預(yù)計(jì)2018年將達(dá)到近300億美元。國內(nèi)機(jī)器人產(chǎn)業(yè)近年發(fā)展迅猛,2017年,工業(yè)機(jī)器人生產(chǎn)超過13萬臺(tái),較上年增長(zhǎng)68.1%,目前高速增長(zhǎng)的態(tài)勢(shì)還在延續(xù)。與此同時(shí),北京航空航天大學(xué)教授王田苗表示,雖然...
  夏季是降水量最高的季節(jié),尤其是經(jīng)常遭遇臺(tái)風(fēng)天的南方地區(qū),行車停車時(shí)車主多少會(huì)存在憂慮。除了擔(dān)心泡水后的車影響保險(xiǎn)理賠之外,還怕 " 電動(dòng)汽車在下雨天之后會(huì)發(fā)生漏電 " 的倒霉事落在自己身上,甚至于有些人都不敢在雷雨天充電,今天就來為廣大車友們劈一下這個(gè)謠言!  純電動(dòng)車是指完全由動(dòng)力蓄電池提供電力驅(qū)動(dòng)的電動(dòng)車。車載電源為動(dòng)力,...
此電阻爐溫度控制器主要是以單片機(jī)STC89C52為核心,通過S型熱電偶采集熱端溫度并進(jìn)行冷端溫度補(bǔ)償?shù)玫綄?shí)際溫度T,然后經(jīng)放大電路和ADC0832模數(shù)轉(zhuǎn)換,并進(jìn)行線性化處理,之后經(jīng)單片機(jī)STC89C52進(jìn)行PID控制,并加入PID參數(shù)的調(diào)整,最后通過液晶顯示器LCD1602實(shí)現(xiàn)溫度值和PID輸出值及參數(shù)值的顯示。它用最簡(jiǎn)單的硬件單元和軟件編程實(shí)現(xiàn)了溫度采集、溫度PID控制...
智東西(公眾號(hào):zhidxcom)作者 | 健恩編輯 | 云鵬智東西9月11日?qǐng)?bào)道,昨天,世界機(jī)器人大會(huì)再次在北京亦莊拉開帷幕,智東西記者一大早便跨越整個(gè)北京城來到這里打探這場(chǎng)大會(huì)的最新消息。世界機(jī)器人大會(huì)自2015年開始舉辦,迄今為止已成功舉辦過5次。它不僅是國內(nèi)一年一度規(guī)模最大的機(jī)器人產(chǎn)業(yè)頂級(jí)展會(huì),也是國內(nèi)機(jī)器人產(chǎn)業(yè)風(fēng)向的集中展示。智東西了解...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved