Browse Source

update

master
zhaohe 2 years ago
parent
commit
14654f9853
  1. 6
      chip/chip.cpp
  2. 2
      chip/chip_tim_irq_shceduler.cpp
  3. 2
      chip/zgpio.cpp
  4. 2
      components/step_motor_45/step_motor_45_scheduler.cpp
  5. 7
      components/subcanmodule/dep.hpp
  6. 90
      components/subcanmodule/zcancmder_subboard_initer.cpp
  7. 39
      components/subcanmodule/zcancmder_subboard_initer.hpp
  8. 4
      os/delay.cpp
  9. 10
      os/mutex.cpp
  10. 2
      os/mutex.hpp
  11. 2
      os/osbasic_h.hpp
  12. 2
      os/ticket.cpp

6
chip/chip.cpp

@ -40,9 +40,9 @@ void chip_init(chip_cfg_t *cfg) {
50);
ZEARLY_LOGI("SYS", "chip init ok");
ZEARLY_LOGI("SYS", "= manufacturer : %s", MANUFACTURER);
ZEARLY_LOGI("SYS", "= project name : %s", PROJECT_NAME);
ZEARLY_LOGI("SYS", "= version : %s", VERSION);
ZEARLY_LOGI("SYS", "= manufacturer : %s", PC_MANUFACTURER);
ZEARLY_LOGI("SYS", "= project name : %s", PC_PROJECT_NAME);
ZEARLY_LOGI("SYS", "= version : %s", PC_VERSION);
ZEARLY_LOGI("SYS", "= freq : %d", HAL_RCC_GetSysClockFreq());
ZEARLY_LOGI("SYS", "= build time : %s", __DATE__ " " __TIME__);
}

2
chip/chip_tim_irq_shceduler.cpp

@ -41,7 +41,7 @@ void ChipTimIrqShceduler::simpleTimer_startByFreq(float freq) {
m_htim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_Base_Init(m_htim);
HAL_NVIC_SetPriority(chip_tim_get_irq(m_htim), IFLYTOP_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_SetPriority(chip_tim_get_irq(m_htim), PC_IRQ_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(chip_tim_get_irq(m_htim));
HAL_TIM_Base_Start_IT(m_htim);

2
chip/zgpio.cpp

@ -181,7 +181,7 @@ void ZGPIO::initAsInput(Pin_t pin, GPIOMode_t mode, GPIOIrqType_t irqtype, bool
if (m_irqtype != kIRQ_noIrq) {
regIRQGPIO(this);
lastLevel = getState();
HAL_NVIC_SetPriority(getEXTIIRQn(), IFLYTOP_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_SetPriority(getEXTIIRQn(), PC_IRQ_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(getEXTIIRQn());
}

2
components/step_motor_45/step_motor_45_scheduler.cpp

@ -18,7 +18,7 @@ void StepMotor45Scheduler::initialize(zchip_tim_t* tim) {
m_htim->Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_Base_Init(m_htim);
HAL_NVIC_SetPriority(chip_tim_get_irq(m_htim), IFLYTOP_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_SetPriority(chip_tim_get_irq(m_htim), PC_IRQ_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(chip_tim_get_irq(m_htim));
// HAL_TIM_Base_Start_IT(m_htim);

7
components/subcanmodule/dep.hpp

@ -0,0 +1,7 @@
#pragma once
#include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp"
#include "sdk\components\hardware\uart\zuart_dma_receiver.hpp"
#include "sdk\components\zcancmder\zcan_board_module.hpp"
#include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp"

90
components/subcanmodule/zcancmder_subboard_initer.cpp

@ -0,0 +1,90 @@
#include "zcancmder_subboard_initer.hpp"
//
#include "sdk\components\flash\znvs.hpp"
//
#include <stdio.h>
#include <string.h>
#include "project_configs.h"
using namespace iflytop;
const char* TAG = PC_PROJECT_NAME;
__weak void nvs_init_cb() {}
extern DMA_HandleTypeDef PC_DEBUG_UART_DMA_HANDLER;
int32_t ZCancmderSubboardIniter::get_module_id(int32_t moduleIndex) { return m_cfg.deviceId * 100 + moduleIndex; }
void ZCancmderSubboardIniter::init(cfg_t* cfg) {
m_cfg = *cfg;
chip_cfg_t chipcfg = {};
chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER;
chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER;
chipcfg.huart = &PC_DEBUG_UART;
chipcfg.debuglight = PC_DEBUG_LIGHT_GPIO;
chip_init(&chipcfg);
zos_cfg_t zoscfg;
zos_init(&zoscfg);
ZLOGI(TAG, "boardId:%d", m_cfg.deviceId);
/*******************************************************************************
* NVSINIT *
*******************************************************************************/
if (PC_NVS_ENABLE) {
ZNVS::ins().initialize(PC_NVS_CONFIG_FLASH_SECTOR);
nvs_init_cb();
ZNVS::ins().init_config();
}
auto zcanCmder_cfg = zcanCmder.createCFG(m_cfg.deviceId);
zcanCmder.init(zcanCmder_cfg);
ziProtocolParser.initialize(&zcanCmder);
{
static ZUARTDmaReceiver dmaUartReceiver;
static ZUARTDmaReceiver::hardware_config_t cfg = {
.huart = &PC_DEBUG_UART,
.dma_rx = &PC_DEBUG_UART_DMA_HANDLER,
.rxbuffersize = PC_DEBUG_UART_RX_BUF_SIZE,
.rxovertime_ms = 10,
};
dmaUartReceiver.initialize(&cfg);
cmder.initialize(&dmaUartReceiver);
zModuleDeviceManager.initialize(nullptr);
zModuleDeviceScriptCmderPaser.initialize(&cmder, &zModuleDeviceManager);
}
initmodule();
}
void ZCancmderSubboardIniter::initmodule() {
static ZCanBoardModule boardmodule;
ZCanBoardModule::hardware_config_t hcfg = {};
static_assert(ZARRAY_SIZE(hcfg.input) == ZARRAY_SIZE(m_cfg.input_gpio));
static_assert(ZARRAY_SIZE(hcfg.output) == ZARRAY_SIZE(m_cfg.output_gpio));
memcpy(&hcfg.input, &m_cfg.input_gpio, sizeof(m_cfg.input_gpio));
memcpy(&hcfg.output, &m_cfg.output_gpio, sizeof(m_cfg.output_gpio));
boardmodule.initialize(get_module_id(0), &hcfg);
ziProtocolParser.registerModule(&boardmodule);
zModuleDeviceManager.registerModule(&boardmodule);
}
void ZCancmderSubboardIniter::register_module(ZIModule* module) {
ziProtocolParser.registerModule(module);
zModuleDeviceManager.registerModule(module);
}
void ZCancmderSubboardIniter::loop() {
while (true) {
OSDefaultSchduler::getInstance()->loop();
zcanCmder.loop();
cmder.schedule();
}
}

39
components/subcanmodule/zcancmder_subboard_initer.hpp

@ -0,0 +1,39 @@
#pragma once
#include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp"
#include "sdk\components\hardware\uart\zuart_dma_receiver.hpp"
#include "sdk\components\zcancmder\zcan_board_module.hpp"
#include "sdk\components\zcancmder\zcanreceiver.hpp"
#include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp"
#include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp"
namespace iflytop {
class ZCancmderSubboardIniter {
public:
typedef struct {
int32_t deviceId;
ZGPIO::InputGpioCfg_t input_gpio[10];
ZGPIO::OutputGpioCfg_t output_gpio[10];
} cfg_t;
private:
ZCanCmder zcanCmder;
ZIProtocolParser ziProtocolParser;
ZModuleDeviceManager zModuleDeviceManager;
MicroComputerModuleDeviceScriptCmderPaser zModuleDeviceScriptCmderPaser;
CmdSchedulerV2 cmder;
cfg_t m_cfg;
public:
void init(cfg_t* cfg);
void register_module(ZIModule* module);
int32_t get_module_id(int32_t moduleIndex);
//
void loop();
private:
int32_t getDeviceId();
void initmodule();
};
} // namespace iflytop

4
os/delay.cpp

@ -1,6 +1,6 @@
#include "delay.hpp"
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
#include "cmsis_os.h"
#endif
@ -11,7 +11,7 @@ void zos_early_delay(int ms) {
zos_early_delayus(1000);
}
}
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
void zos_delay(int ms) { osDelay(ms); }
#else
void zos_delay(int ms) { z_early_delay(ms); }

10
os/mutex.cpp

@ -8,19 +8,19 @@ using namespace iflytop;
*******************************************************************************/
zmutex::zmutex() {}
zmutex::~zmutex() {
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
vSemaphoreDelete(recursiveMutex);
#endif
}
void zmutex::init() {
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
recursiveMutex = xSemaphoreCreateRecursiveMutex();
#endif
}
bool zmutex::isInit() {
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
return recursiveMutex != NULL;
#else
return true;
@ -28,7 +28,7 @@ bool zmutex::isInit() {
}
void zmutex::lock() {
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
ZEARLY_ASSERT(recursiveMutex != NULL);
xSemaphoreTakeRecursive(recursiveMutex, portMAX_DELAY);
#else
@ -36,7 +36,7 @@ void zmutex::lock() {
#endif
}
void zmutex::unlock() {
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
xSemaphoreGiveRecursive(recursiveMutex);
#else
chip_critical_exit();

2
os/mutex.hpp

@ -5,7 +5,7 @@ using namespace std;
class zmutex {
public:
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
SemaphoreHandle_t recursiveMutex;
#endif

2
os/osbasic_h.hpp

@ -1,6 +1,6 @@
#pragma once
#include "../chip/chip.hpp"
//
#ifdef IFLYTOP_ENABLE_OS
#ifdef PC_IFLYTOP_ENABLE_OS
#include "cmsis_os.h"
#endif

2
os/ticket.cpp

@ -2,7 +2,7 @@
extern "C" {
uint32_t zos_get_tick(void) {
// #ifdef IFLYTOP_ENABLE_OS
// #ifdef PC_IFLYTOP_ENABLE_OS
// return osKernelSysTick();
// #else
return HAL_GetTick();

Loading…
Cancel
Save