LPC55S69的时钟滴嗒要和睡眠模式一起使用,不能单独作为一个定时器来使用,否则不能进入中断。
也就是不能进入utick_callback_t cb。
void UTICK_SetTick(UTICK_Type *base, utick_mode_t mode, uint32_t count, utick_callback_t cb)
一、引脚。
随便设置一个输出的引脚。
点击
二、代码。
#include "fsl_debug_console.h"
#include "board.h"
#include "fsl_common.h"
#include "fsl_utick.h"
#include "fsl_gpio.h"
#include "fsl_power.h"
#include "pin_mux.h"
#include <stdbool.h>
void DelayInit(void) { // UTICK CLOCK=1MHz
SYSCON->CLOCK_CTRL |= SYSCON_CLOCK_CTRL_FRO1MHZ_CLK_ENA_MASK | SYSCON_CLOCK_CTRL_FRO1MHZ_UTICK_ENA_MASK;
UTICK_Init(UTICK0);
}
void DelayMs(uint32_t time) {
UTICK_SetTick(UTICK0, kUTICK_Onetime, time*1000, NULL);
POWER_EnterSleep();
}
void DelayUs(uint32_t time) {
UTICK_SetTick(UTICK0, kUTICK_Onetime, time, NULL);
POWER_EnterSleep();
}
int main(void) {
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
BOARD_InitPins();
BOARD_BootClockPLL150M();
BOARD_InitDebugConsole();
DelayInit();
while (1) {
GPIO_PinWrite(BOARD_LED1_GPIO,BOARD_LED1_PORT,BOARD_LED1_PIN,0);
DelayMs(100);
GPIO_PinWrite(BOARD_LED1_GPIO,BOARD_LED1_PORT,BOARD_LED1_PIN,1);
DelayMs(160);
}
}
三、说明。
utick时钟设置为1MHz。
通过示波器能观察到高电平延时了160ms,低电平延时了100ms。