This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP432P401M:确认代码、我认为我的 SysTick 有问题、但无法找到它

Guru**** 2595805 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/646997/ccs-msp432p401m-confirm-of-code-i-think-that-i-have-a-problem-with-systick-but-can-t-find-it

器件型号:MSP432P401M

工具/软件:Code Composer Studio

好的,我在 EPD_DELAY_ms()函数处被阻止,您是否看到其存在任何问题?

静态易失性 uint32_t sys_Counter、EPD_Counter;

const eUSCI_SPI_MasterConfig spiMasterConfig =
{
EUSCI_B_SPI_CLOCKSOURCE_SMCLK、// SMCLK 时钟源
CPU_F、// SMCLK = 48Mhz
COG_SPI_波特 率、// SPICLK = 12MHz
EUSCI_B_SPI_MSB_FIRST、// MSB First
EUSCI_B_SPI_PHASE_DATA_Changed_ONFIRST_Captured_On_Next、// Phase
EUSCI_B_SPI_CLOCKPOLARITY_INACT_HIGH、//高极性
EUSCI_B_SPI_3引脚// 3线 SPI 模式
};

void main (void)
{
//system_init();
/*停止看门狗*/
MAP_WDT_A_HOLDTimer();

/*为 DCO 频率计算启用 FPU */
map_fpu_enableModule();

/*将 DCO 设置为48MHz (升级 Vcore)*/
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCtl_setWaitState (FLASH_BANK0、1);
MAP_FlashCtl_setWaitState (FLASH_BANK1、1);

//map_CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 48);
cs_setExternalClockSourceFrequency (32000、48000000);
CS_startHFXT (false);

/*将 MCLK 初始化为 HFXT (有效48MHz)*/
MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_SELECT、CS_CLOCK_DEVIDER_1);


EPD_DISPLAY_INIT();
SysTick 配置();
EPD_DELAY_ms (1000);
Set_AssignEPD_Drive (EPD_Type、EPD_SIZE、USE_Temperature_Sensor);

EPD_DISPLAY_GU_FITH_POINTER (Image2、Image1、GU_Mode、true);
EPD_DELAY_ms (5000);

EPD_DISPLAY_GU_FITH_POINTER (Image1、Image2、GU_Mode、true);
EPD_DELAY_ms (5000);

}

void display_init (void)
{
EPD_DISPLAY_hardware_init ();
PWD_STU=false;
Cur_Mode=gu_Mode;
}

void EPD_DISPLAY_hardware_init (void)
{
EPD_INIT_GPIO();
EPD_Vcc_turn off ();
EPD_SPI_low (EPD (
);EPD_r000 (EPD);EPD_r000_low_rcs

EPD_DELOAD_LOW ();
}

void SysTK_Configuration (void)
{
//将 SysTick 配置为在48000时触发(MCLK 为48MHz、因此
这将*每~1ms 进行一次切换)*/
MAP_SysTK_enableModule ();
MAP_SysTK_setPeriod (((CPU_F/1000));
MAP_Interrupt _enableSysTick

(= 0);MAP_enableSysTick Interrupt = Isrupt_enable0_enableCounter
MAP_Interrupt_enableMaster ();

}
uint32_t getnowtime (void)
{
return sys_Counter;
}
//**
*\brief Start Timer
*\note
*所需值:1mSec
*实际值:1.00mSec
*/
void SysTick 配置(void)
{
//将 SysTick 配置为48000 (MCLK 为48MHz);
~


使能映射模块(* 1);使能 eMTO_1000 (*);使能 eMUST_eMTOM (* 1)
MAP_SysTK_enableInterrupt ();
SYS_Counter =0;
MAP_Interrupt_enableMaster();

}

void SysTick 处理程序(void)
{
SYS_Counter++;
}

void SysTK_ISR (void)
{
sys_Counter++;
}
void SysTK_Stop (void)
{
map_SysTK_disableInterrupt ();
map_SysTK_disableModule (void);
}
void SysTK_Start (void)
{











EPD stick_Configuration (void);}*\brief Start 计时器*\note*\note= 1 mSecr * 1、1、1、需要的 SysTick (void)*值:1、sys_start)




/**
*\brief 停止计时器
*/
void stop_void _timer (void)
{

}
/**
\brief 在启动新计时器后获取当前计时器
*/
uint32_t get_EPD_time_tick (void)
{
return (sys_Counter-EPD_Counter);
}

/**
*\brief delay mins
*\param ms MINI-seconds (min_start



)(insigned)
while (get_EPD_TIME_TICK ()<=ms)
{

}



void EPD_SPI_init (uint32_t SPI_bAURATE)
{
//在 SPI 模式下选择 P1.5 P1.7和 P1.6 *
GPIO_setPeripheralModuleFunctionInputPin (SPICLK_PORT、
SPICLK_PIN | SPIMISO_PIN | SPIMOSI_PIN、GPIO_PRIMARY_MODULE_FUNCTION);

//在3线主控模式下配置 SPI */
SPI_STATE=SPI_INITMASTER (EUSCI_B0_BASE、&SPIMMasterConfig);

//
启用 SPI 模块*// if (SPI_STATESI_ENABLEMODULE 模块

;EUSCI_BASE) 0_BUSCI_ENABASE (EUSCI_ENABSIMPLE_0);//启用 SPI 模块*


它在 void EPD_DELAY_ms (unsigned int ms)中被阻止、也无法使用 SPI、您在这里看到了任何可见的问题吗? 如果您需要代码的其他部分、请这么说。

谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    > MAP_Interrupt_enableSlepOnIsrExit();
    我建议您不要这样做。 这并不意味着"如果您处于睡眠状态、则在 ISR 之后返回睡眠状态"(如 MSP430 LPM 中所示)、而是"始终在 ISR 返回时进入睡眠状态"。 要使用此功能、您需要设计程序以使用它。

    在任何情况下、延迟环路都不会(显式)睡眠、也不会有 DisableSlepOnIsrExit 来唤醒它。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    安德烈

    我看到的一个问题是、您正在将 MCLK 设置为使用 HFXT、但您尚未设置外设引脚以与 HFXT 晶体连接。  

    请在启动 HFXT 之前添加以下内容。  

    参考示例:dev.ti.com/.../

    /*配置用于外设/晶体的引脚*/
    MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_PJ、
    GPIO_PIN3 | GPIO_PIN2、GPIO_PRIMARY_MODULE_FUNCTION);