|
发表于 2020-9-29 15:09:30
|
显示全部楼层
基于cubemx生成的工程,对tick做了一点小修改。
/*
*********************************************************************************************************
*
* 模块名称 : ThreadX底层初始化
* 文件名称 : tx_init_low_level.c
* 版 本 : V1.0
* 说 明 : 底层初始化
*
* 修改记录 :
* 版本号 日期 作者 说明
* V1.0 2020-09-18 armfly 正式发布
*
* Copyright (C), 2020-2030, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/
#include "stm32h7xx_hal.h"
#include "tx_api.h"
#include "tx_initialize.h"
#include "tx_thread.h"
#include "tx_timer.h"
#if 0
#define SYSTEM_CLOCK = 400000000; /* 系统主频 */
const uint32_t SYSTICK_CYCLES = ((SYSTEM_CLOCK / 1000) -1); /* 周期配置 */
#endif
extern void OS_SysTick_Handler(void);
extern VOID _tx_timer_interrupt(VOID);
/*
*********************************************************************************************************
* 函 数 名: _tx_initialize_low_level
* 功能说明: 底层初始化
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
VOID _tx_initialize_low_level(VOID)
{
#if 0
/* 关闭中断 */
__set_PRIMASK(1);
/* 下面这两个用不上,直接注释掉 */
// _tx_initialize_unused_memory = __INITIAL_SP;
// _tx_thread_system_stack_ptr = __Vectors;
/* 配置滴答定时器 */
SysTick_Config(SYSTICK_CYCLES);
#endif
/* 设置SVC中断优先级并使能 */
HAL_NVIC_SetPriority(SVCall_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(SVCall_IRQn);
/* 设置PendSV中断优先级并使能 */
HAL_NVIC_SetPriority(PendSV_IRQn, 15, 0);
HAL_NVIC_EnableIRQ(PendSV_IRQn);
#if 0
/* 设置Systick中断优先级并使能 */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(SysTick_IRQn);
#endif
}
/*
*********************************************************************************************************
* 函 数 名: OS_SysTick_Handler
* 功能说明: 滴答定时器中断服务程序
* 形 参: 无
* 返 回 值: 无
*********************************************************************************************************
*/
void OS_SysTick_Handler(void)
{
HAL_IncTick();
if (_tx_thread_system_state == TX_INITIALIZE_IS_FINISHED)
_tx_timer_interrupt();
} |
|