打印
[蓝牙芯片]

TMOS系统调用失败,不知道问题在哪

[复制链接]
5653|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
用的是CH573F,PA4 PA5接了2个LED我设想的是上电两个LED灯亮,1s后都熄灭,接着其中一个LED闪烁。但没看的啥效果,灯都没点亮,编译通过。
程序参考:https://www.cnblogs.com/iot-fan/p/13460082.html
#include "CH57x_common.h"
#include"tmos_demo_task.h"
/*********************************************************************
* GLOBAL TYPEDEFS
*/
__attribute__((aligned(4))) u32 MEM_BUF[BLE_MEMHEAP_SIZE/4];
__attribute__((section(".highcode")))
void Main_Circulation()
{
  while(1){
    TMOS_SystemProcess( );
  }
}
int main()
{
  SetSysClock( CLK_SOURCE_PLL_60MHz );
  GPIOA_ModeCfg(GPIO_Pin_4,GPIO_ModeOut_PP_5mA);
  GPIOA_ModeCfg(GPIO_Pin_5,GPIO_ModeOut_PP_5mA);
  GPIOA_SetBits(GPIO_Pin_4);
  GPIOA_SetBits(GPIO_Pin_5);
  demo_task_init();
  Main_Circulation();
}
#include "CH57x_common.h"
#include "tmos_demo_task.h"
//存储 当前task id 的全局变量
tmosTaskID  demo_task_id = INVALID_TASK_ID;
//系统消息处理的函数

//task的event处理回调函数,需要在注册task时候,传进去
static uint16_t demo_task_process_event( uint8_t task_id, uint16_t events ) {
    if ( events & SYS_EVENT_MSG ) {
        uint8_t *pMsg;
        if ( (pMsg = tmos_msg_receive( demo_task_id )) != NULL ) {

            tmos_msg_deallocate( pMsg );
        }
        // return unprocessed events
        return (events ^ SYS_EVENT_MSG);
    }
    //event 处理
    if(events & DEMO_TASK_TMOS_EVT_TEST_1) {
              GPIOA_ResetBits(GPIO_Pin_4);
              GPIOA_ResetBits(GPIO_Pin_5);
        return (events ^ DEMO_TASK_TMOS_EVT_TEST_1);
    }
    //event 处理
    if(events & DEMO_TASK_TMOS_EVT_TEST_2) {
        tmos_start_task(demo_task_id,DEMO_TASK_TMOS_EVT_TEST_3,1600);
        GPIOA_SetBits(GPIO_Pin_4);
        GPIOA_SetBits(GPIO_Pin_5);
        return (events ^ DEMO_TASK_TMOS_EVT_TEST_2);
    }
    //event 处理
    if(events & DEMO_TASK_TMOS_EVT_TEST_3) {
        tmos_start_task(demo_task_id,DEMO_TASK_TMOS_EVT_TEST_3,800);
        GPIOA_InverseBits( GPIO_Pin_4 );
        return (events ^ DEMO_TASK_TMOS_EVT_TEST_3);
    }
    // Discard unknown events
    return 0;
}

uint8 tmos_demo_task_send_msg( uint8_t task_id,uint8_t *data ,uint16_t length ) {
    uint8_t *p_data;
    if ( task_id != TASK_NO_TASK ) {
        // Send the address to the task
        p_data = tmos_msg_allocate(length);
        if ( p_data ) {
            tmos_memcpy(p_data,data,length);
            tmos_msg_send( task_id, p_data );
            return ( SUCCESS );
        }
    }
    return ( FAILURE );
}
//初始化task
//包括注册函数,可以注册后去开启event
void demo_task_init( void ) {
    //注册task id,同事把该task的event处理函数传进去
    demo_task_id  = TMOS_ProcessEventRegister( demo_task_process_event );
    //立即开始一个event
    tmos_set_event(demo_task_id,DEMO_TASK_TMOS_EVT_TEST_1);
    //开始一个定时event,1s后产生,当前语句只会产生一次event
    //可以在event产生后去开启event,可以是别的task的,也可以是当前task的event
    tmos_start_task(demo_task_id,DEMO_TASK_TMOS_EVT_TEST_2,1600);
}

CH573F-TMOS-Demo.zip (631.66 KB)

使用特权

评论回复
沙发
weifeng90| | 2021-8-4 18:55 | 只看该作者
TMOS系统?没看明白。

使用特权

评论回复
板凳
WCHTech2| | 2021-8-5 09:32 | 只看该作者
TMOS的时钟是基于RTC运行,单位为625us。如需测试TMOS,建议用BLE文件夹下的broadcast或peripheral例程测试,不要新建工程。

使用特权

评论回复
地板
单片小菜| | 2021-8-5 11:17 | 只看该作者
看见版主的回复,我发现我的问题出现在什么地方了。我自己新建的工程。

使用特权

评论回复
5
妖妖妖|  楼主 | 2021-8-6 00:48 | 只看该作者
WCHTech2 发表于 2021-8-5 09:32
TMOS的时钟是基于RTC运行,单位为625us。如需测试TMOS,建议用BLE文件夹下的broadcast或peripheral例程测试 ...

好的

使用特权

评论回复
6
妖妖妖|  楼主 | 2021-8-6 00:50 | 只看该作者
weifeng90 发表于 2021-8-4 18:55
TMOS系统?没看明白。

根据OSAL简化来的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

51

帖子

0

粉丝