提交全部资料
This commit is contained in:
121
1.主程序源代码/User/shell/shell_port.c
Normal file
121
1.主程序源代码/User/shell/shell_port.c
Normal file
@@ -0,0 +1,121 @@
|
||||
/**
|
||||
* @file shell_port.c
|
||||
* @author Letter (NevermindZZT@gmail.com)
|
||||
* @brief
|
||||
* @version 0.1
|
||||
* @date 2019-02-22
|
||||
*
|
||||
* @copyright (c) 2019 Letter
|
||||
*
|
||||
*/
|
||||
|
||||
#include "FreeRTOS.h"
|
||||
#include "task.h"
|
||||
#include "shell.h"
|
||||
#include "queue.h"
|
||||
#include "semphr.h"
|
||||
#include "stm32f10x.h"
|
||||
#include "bsp_usart.h"
|
||||
#include "string.h"
|
||||
|
||||
Shell shell;
|
||||
char shellBuffer[512];
|
||||
|
||||
static SemaphoreHandle_t shellMutex;
|
||||
|
||||
/**
|
||||
* @brief 用户shell写
|
||||
*
|
||||
* @param data 数据
|
||||
* @param len 数据长度
|
||||
*
|
||||
* @return short 实际写入的数据长度
|
||||
*/
|
||||
short userShellWrite(char *data, unsigned short len)
|
||||
{
|
||||
Usart_SendString(USART1,data);
|
||||
return len;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief 用户shell读
|
||||
*
|
||||
* @param data 数据
|
||||
* @param len 数据长度
|
||||
*
|
||||
* @return short 实际读取到
|
||||
*/
|
||||
/* 自定义接口函数 */
|
||||
extern uint8_t g_debugRxBuf[];
|
||||
extern uint8_t g_debugRxFlag;
|
||||
extern uint16_t g_debugRxLen;
|
||||
|
||||
void userShellRun(void)
|
||||
{
|
||||
if(g_debugRxFlag)
|
||||
{
|
||||
for(uint8_t i=0;i<=g_debugRxLen;i++)
|
||||
{
|
||||
shellHandler(&shell,g_debugRxBuf[i]);
|
||||
}
|
||||
g_debugRxLen = 0;
|
||||
g_debugRxFlag = 0;
|
||||
memset(g_debugRxBuf,0x00,255);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
short userShellRead(char *data, unsigned short len)
|
||||
{
|
||||
userShellRun();
|
||||
vTaskDelay(20);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 用户shell上锁
|
||||
*
|
||||
* @param shell shell
|
||||
*
|
||||
* @return int 0
|
||||
*/
|
||||
int userShellLock(Shell *shell)
|
||||
{
|
||||
xSemaphoreTake(shellMutex, portMAX_DELAY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 用户shell解锁
|
||||
*
|
||||
* @param shell shell
|
||||
*
|
||||
* @return int 0
|
||||
*/
|
||||
int userShellUnlock(Shell *shell)
|
||||
{
|
||||
xSemaphoreGive(shellMutex);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 用户shell初始化
|
||||
*
|
||||
*/
|
||||
void userShellInit(void)
|
||||
{
|
||||
shellMutex = xSemaphoreCreateMutex();
|
||||
|
||||
shell.write = userShellWrite;
|
||||
shell.read = userShellRead;
|
||||
shell.lock = userShellLock;
|
||||
shell.unlock = userShellUnlock;
|
||||
shellInit(&shell, shellBuffer, 512);
|
||||
if (xTaskCreate(shellTask, "shell", 256, &shell, 5, NULL) != pdPASS)
|
||||
{
|
||||
printf("shell task creat failed");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user