STM32移植letter-shell

Posted 旧年不在666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32移植letter-shell相关的知识,希望对你有一定的参考价值。

STM32移植letter-shell

一、平台

  • 芯片:STM32F103RDT6
  • 开发工具:stm32cubemx V6.1.2 + keil MDK V5.27.1.0
  • 开发所用的库:HAL库
  • SHELL版本:letter-shell V3.0

二、源码

letter-shell

三、串口配置

  • 采用USART1作为FreeRTOS-CLI终端命令行接口

  • 开启USART1全局中断,用于接收终端输入

四、文件移植

  • 拷贝letter-shell源码到工程中

  • 拷贝接口层文件到工程中

  • 添加文件到工程中
  • 移植底层串口相关接口
    • shell_port.c内容如下:
    /**
     * @file shell_port.c
     * @author Letter (NevermindZZT@gmail.com)
     * @brief 
     * @version 0.1
     * @date 2019-02-22
     * 
     * @copyright (c) 2019 Letter
     * 
     */
    
    #include "shell_port.h"
    
    Shell shell;
    char shellBuffer[512];
    uint8_t letter_shell_recv_buff = 0;
    
    /**
     * @brief 用户shell写
     * 
     * @param data 数据
     */
    void userShellWrite(char data)
    
        HAL_UART_Transmit(&huart1, (uint8_t *)&data, 1, 1000);
    
    
    #if 0
    /**
     * @brief 用户shell读
     * 
     * @param data 数据
     * @return char 状态
     */
    signed char userShellRead(char *data)
    
        if (serialReceive(&debugSerial, (uint8_t *)data, 1, 0) == 1)
        
            return 0;
        
        else
        
            return -1;
        
    
    #endif
    
    /**
     * @brief 用户shell初始化
     * 
     */
    void userShellInit(void)
    
        HAL_UART_Receive_IT(&huart1, &letter_shell_recv_buff, 1);
        shell.write = userShellWrite;
    
    #if 0
        shell.read = userShellRead;
    #endif
    
        shellInit(&shell, shellBuffer, 512);
    
    
    /******************************************************************************
     * @Function: letter_shell_recv_irq_handler
     * @Description: letter-shell接收数据处理
     * @Input: void
     * @Output: None
     * @Return: void
     * @Others: 此函数需要在对应的串口接收中断中被调用
     * @param UART_HandleTypeDef *huart
    *******************************************************************************/
    void letter_shell_recv_irq_handler(UART_HandleTypeDef *huart)
    
        shellHandler(&shell, letter_shell_recv_buff);
        HAL_UART_Receive_IT(huart, &letter_shell_recv_buff, 1);
    
    
    • shell_port.h内容如下:
    /**
     * @file shell_port.h
     * @author Letter (NevermindZZT@gmail.com)
     * @brief 
     * @version 0.1
     * @date 2019-02-22
     * 
     * @copyright (c) 2019 Letter
     * 
     */
    
    #ifndef __SHELL_PORT_H__
    #define __SHELL_PORT_H__
    
    #include "usart.h"
    #include "shell.h"
    
    extern Shell shell;
    
    void userShellInit(void);
    void letter_shell_recv_irq_handler(UART_HandleTypeDef *huart);
    
    #endif
    
  • 以上移植完成后,调用初始化函数即可
letter_shell_init();

五、效果如下

六、参考文档

letter-shell Source

letter-shell V3.0 docs

以上是关于STM32移植letter-shell的主要内容,如果未能解决你的问题,请参考以下文章

stm32系列可以移植应用程序吗

stm32f407移植ucos怎么把ucos放在stm32上?

STM32怎么移植UCLinux-STM32-F0/F1/F2专区

请问有没有ucos 与stm32 移植的教程啊,例子啊,多一点,下载链接也行

GuiLite移植GUI例程到STM32

STM32移植FreeModbus