移植完成mdkv5工程

This commit is contained in:
2025-06-30 23:25:38 +08:00
commit 2b2747fef7
28 changed files with 11692 additions and 0 deletions

49
App/Src/LedTest.c Normal file
View File

@@ -0,0 +1,49 @@
#include "LedTest.h"
/* OS相关 */
#define TASK_STACK_SIZE 128 //任务栈大小
/* OS相关 */
TX_THREAD LedCtlTaskTCB; //LED控制任务句柄
static uint8_t TaskStack[TASK_STACK_SIZE]; //任务栈空间
void LedCtlTask(ULONG thread_input);
/**
* @brief LED控制任务初始化
* @param Level任务优先级 Preemption抢占阈值
* @retval void
* @note void
* @example void
*/
void LedCtlTaskInit(uint8_t Level,uint8_t Preemption)
{
tx_thread_create(&LedCtlTaskTCB, /* 任务句柄 */
"LedCtlTask", /* 任务名称 */
LedCtlTask, /* 任务入口函数 */
0, /* 任务参数 */
&TaskStack[0], /* 任务栈起始地址 */
TASK_STACK_SIZE, /* 任务堆栈大小 */
Level, /* 优先级 */
Preemption, /* 抢占阈值 */
TX_NO_TIME_SLICE, /* 不使用时间片轮转 */
TX_AUTO_START); /* 自动启动线程 */
}
/**
* @brief LED控制任务
* @param ThreadXInput 任务参数
* @retval void
* @note void
* @example void
*/
void LedCtlTask(ULONG ThreadXInput)
{
(void)ThreadXInput;
while (true)
{
IoCtlLedToggle(LED2);
tx_thread_sleep(100);
}
}

103
App/Src/LetterShell.c Normal file
View File

@@ -0,0 +1,103 @@
#include "LetterShell.h"
#include "shell.h"
#define WR_BUFFER_SIZE 512
/* 1. 创建shell对象开辟shell缓冲区 */
Shell Host; //Shell实例化
char HostBuffer[WR_BUFFER_SIZE]; //读写缓冲区
uint32_t HostId; //串口号
/**
* @brief Shell写函数
* @param ComId 串口号ch 数据
* @retval void
* @note void
* @example void
*/
signed short ShellWrite(char* ch, unsigned short Len)
{
UsartSendStr(HostId, (uint8_t* )ch,Len);
return Len;
}
/**
* @brief Shell读函数 - 中断回调实现
* @param Vector 中断向量号
* @retval void
* @note void
* @example void
*/
void LetterShellIrqFunc(uint32_t Vector)
{
uint8_t ch = 0x00;
ch = UsartReceiveChar(Vector);
shellHandler(&Host, ch);
}
/**
* @brief 初始化Shell
* @param ComId 串口号baud 波特率
* @retval void
* @note void
* @example void
*/
void LetterShellInit(uint32_t ComId, uint32_t baud)
{
HostId = ComId;
//初始化串口
UsartStdConfig(ComId, baud);
//设置串口回调函数
IntCbReg(TTY_COM_IRQN, LetterShellIrqFunc);
//设置中断等级
IntSetLevel(TTY_COM_IRQN,1,1);
//注册写函数
Host.write = ShellWrite;
shellInit(&Host, HostBuffer, WR_BUFFER_SIZE);
}
/**
* @brief 打印版本号
* @param void
* @retval void
* @note void
* @example void
*/
int version(void)
{
printf("%s\r\n",VERSION);
return 0;
}
/**
* @brief DO控制
* @param chnl 通道号 val状态值
* @retval void
* @note void
* @example void
*/
void doSet(uint8_t chnl, uint8_t val)
{
IoCtl(IO_TYPE_DO, chnl, val);
}
/**
* @brief DO控制反转
* @param chnl 通道号
* @retval void
* @note void
* @example void
*/
void doToggle(uint8_t chnl)
{
IoCtlToggleDo(chnl);
}
//打印版本号
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), version, version, version);
//控制DO
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), doSet, doSet, doSet);
//反转DO
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0)|SHELL_CMD_TYPE(SHELL_TYPE_CMD_FUNC), doToggle, doToggle, doToggle);

47
App/Src/Main.c Normal file
View File

@@ -0,0 +1,47 @@
/* MCU INCLUDE */
#include "stm32f10x.h"
/* BSP INCLUDE */
#include "Bsp.h"
/* OPEN_SOURCE_LIB INCLUDE */
#include "LetterShell.h"
/* APP INLCUDE */
#include "LedTest.h"
/**
* @brief ThreadX操作系统入口函数
* @param FirstUnusedMemory OS相关
* @retval void
* @note 此函数应该将所有OS相关的初始化放到这里
* @example void
*/
void tx_application_define(void* FirstUnusedMemory)
{
/* 优先级31抢占10 */
LedCtlTaskInit(31,10);
}
/**
* @brief C程序主函数
* @param void
* @retval void
* @note void
* @example void
*/
int main(void)
{
//bsp初始化
BspConfigInit();
//LetterShell初始化
LetterShellInit(TTY_COM,115200);
/* Start ThreadX */
tx_kernel_enter();
while (true)
{
//程序运行到这里说明OS调度运行失败
printf("OS Start Error !\n");
DelayMs(1000);
}
}