[原创] 泰凌微B91开发套件---freertos

xiaolinen   2022-10-18 22:18 楼主

一:叙述

       本来这篇是想做一个总结的,但是因为测评使用过程中出现的问题已经记录,并且在实际开发过程中要用到freertos实时系统,所以不再总结,而是在官方提供的freertos_demo中进行了更改,算是做一个小小的测试!

二:程序

            在FreeRTOSConfig.h文件中,将configTICK_RATE_HZ宏定义由500修改为了1000;

/********************************************************************************************************
 * @File   main.c
 *
 * @brief   This is the source file for B91m
 *
 * @author   Driver Group
 * @date   2019
 *
 * @par     Copyright (c) 2019, Telink Semiconductor (Shanghai) Co., Ltd. ("TELINK")
 *          All rights reserved.
 *
 *          Licensed under the Apache License, Version 2.0 (the "License");
 *          you may not use this file except in compliance with the License.
 *          You may obtain a copy of the License at
 *
 *              http://www.apache.org/licenses/LICENSE-2.0
 *
 *          Unless required by applicable law or agreed to in writing, software
 *          distributed under the License is distributed on an "AS IS" BASIS,
 *          WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *          See the License for the specific language governing permissions and
 *          limitations under the License.
 *
 *******************************************************************************************************/
#include "app_config.h"
#include "calibration.h"
#include <FreeRTOS.h>
#include <task.h>
#include <queue.h>
#include <timers.h>
#include <stdio.h>

#define timerTick 4

static TaskHandle_t test_handle=NULL;
static TimerHandle_t softWaveTimer=NULL;
static uint32_t MboxValue;

static void test_task(void *pvParameters){
	uint32_t notifyValue;

	while(1){
		if(pdTRUE == xTaskNotifyWait((uint32_t )0x00,(uint32_t)0xffffffff,(uint32_t*)&notifyValue,0)){
			printf("Hello!\r\n");
		}

		if(notifyValue >= timerTick){
			xTimerStop(softWaveTimer,0);
		}
		vTaskDelay(10);
	}
	(void)(pvParameters);
}

extern void vPortRestoreTask();

void pxSoftWaveTimer(TimerHandle_t xTimer)
{
    uint32_t TimerID;
    TimerID   = (uint32_t)pvTimerGetTimerID(xTimer);//获取定时器ID
    if(TimerID == 1){
    	xTaskNotify((TaskHandle_t )test_handle,(uint32_t )MboxValue,(eNotifyAction)eSetValueWithOverwrite);
    	MboxValue++;
    }
}

/**
 * @brief		This is main function
 * @return   none
 */
int main (void)
{
	sys_init(LDO_1P4_LDO_1P8, VBAT_MAX_VALUE_GREATER_THAN_3V6);

	user_read_flash_value_calib();

	CCLK_24M_HCLK_24M_PCLK_24M;

	if(0 ){// deepRetWakeUp
		vPortRestoreTask();
	}else{
		xTaskCreate( test_task,"test",configMINIMAL_STACK_SIZE,NULL,0,&test_handle );

		softWaveTimer = xTimerCreate("softwaveTimer",1000,pdTRUE,(void*)1,pxSoftWaveTimer);
		xTimerStart(softWaveTimer,0);

		vTaskStartScheduler();
	}

	return 0;
}

三:现象

1666102551393.png

 

本帖最后由 xiaolinen 于 2022-10-18 22:44 编辑

回复评论 (1)

这个总结好!

点赞  2022-10-20 07:18
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复