完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
clk的延时函数最小延时是多少
/**************************************************************************//** * @file main.c * @version V3.00 * $Revision: 2 $ * $Date: 15/02/13 3:18p $ * @brief * A sample code for LED blanking. * * @note * Copyright (C) 2015 Nuvoton Technology Corp. All rights reserved. * ******************************************************************************/ #include #include "M058S.h" #define PLLCON_SETtiNG CLK_PLLCON_50MHz_HXT #define PLL_CLOCK 50000000 void SYS_Init(void) { /*---------------------------------------------------------------------------------------------------------*/ /* Init System Clock */ /*---------------------------------------------------------------------------------------------------------*/ /* Enable Internal RC 22.1184MHz clock */ CLK->PWRCON |= CLK_PWRCON_OSC22M_EN_Msk; /* Waiting for Internal RC clock ready */ while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_OSC22M_STB_Msk)); /* Switch HCLK clock source to Internal RC and and HCLK source divide 1 */ CLK->CLKSEL0 &= ~CLK_CLKSEL0_HCLK_S_Msk; CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_HIRC; CLK->CLKDIV &= ~CLK_CLKDIV_HCLK_N_Msk; CLK->CLKDIV |= CLK_CLKDIV_HCLK(1); /* Enable external XTAL 12MHz clock */ CLK->PWRCON |= CLK_PWRCON_XTL12M_EN_Msk; /* Waiting for external XTAL clock ready */ while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_XTL12M_STB_Msk)); /* Set core clock as PLL_CLOCK from PLL */ CLK->PLLCON = PLLCON_SETTING; while(!(CLK->CLKSTATUS & CLK_CLKSTATUS_PLL_STB_Msk)); CLK->CLKSEL0 &= (~CLK_CLKSEL0_HCLK_S_Msk); CLK->CLKSEL0 |= CLK_CLKSEL0_HCLK_S_PLL; /* Update System Core Clock */ /* User can use SystemCoreClockUpdate() to calculate PllClock, SystemCoreClock and CycylesPerUs automatically. */ //SystemCoreClockUpdate(); PllClock = PLL_CLOCK; // PLL SystemCoreClock = PLL_CLOCK / 1; // HCLK CyclesPerUs = PLL_CLOCK / 1000000; // For SYS_SysTickDelay() /* Enable UART module clock */ CLK->APBCLK |= CLK_APBCLK_UART0_EN_Msk; /* Select UART module clock source */ CLK->CLKSEL1 &= ~CLK_CLKSEL1_UART_S_Msk; CLK->CLKSEL1 |= CLK_CLKSEL1_UART_S_HXT; /*---------------------------------------------------------------------------------------------------------*/ /* Init I/O Multi-function */ /*---------------------------------------------------------------------------------------------------------*/ /* Set P3 multi-function pins for UART0 RXD , TXD and CKO */ SYS->P3_MFP &= ~(SYS_MFP_P30_Msk | SYS_MFP_P31_Msk); SYS->P3_MFP |= (SYS_MFP_P30_RXD | SYS_MFP_P31_TXD); } void UART0_Init() { /*---------------------------------------------------------------------------------------------------------*/ /* Init UART */ /*---------------------------------------------------------------------------------------------------------*/ /* Reset UART0 */ SYS->IPRSTC2 |= SYS_IPRSTC2_UART0_RST_Msk; SYS->IPRSTC2 &= ~SYS_IPRSTC2_UART0_RST_Msk; /* Configure UART0 and set UART0 Baudrate */ UART0->BAUD = UART_BAUD_MODE2 | UART_BAUD_MODE2_DIVIDER(__HXT, 115200); UART0->LCR = UART_WORD_LEN_8 | UART_PARITY_NONE | UART_STOP_BIT_1; } /*---------------------------------------------------------------------------------------------------------*/ /* Main Function */ /*---------------------------------------------------------------------------------------------------------*/ int32_t main(void) { int32_t i; /* Unlock protected registers */ SYS_UnlockReg(); /* Init System, peripheral clock and multi-function I/O */ SYS_Init(); /* Lock protected registers */ SYS_LockReg(); /* Init UART0 for printf */ UART0_Init(); printf("\n\nCPU @ %dHz\n", SystemCoreClock); /* This sample code will blinking LED on NuTiny EVB board of M058SSAN. The I/O for LED is P2.3 or P3.6 */ printf("+---------------------------------------+\n"); printf("| NuTiny EVB LED Sample Code |\n"); printf("+---------------------------------------+\n"); /* Init P2.3 and P3.6 to be output mode */ P2->PMD = (P2->PMD & ~(0x3 << 2*3)) | (1 << 2*3); P3->PMD = (P3->PMD & ~(0x3 << 2*6)) | (1 << 2*6); while(1) { /* Toggle P2.3 */ P23 ^= 1; /* Toggle P3.6 */ P36 ^= 1; /* Delay 200ms */ for(i=0;i<2;i++) CLK_SysTickDelay(100000); } } |
|
相关推荐
1个回答
|
|
由于问题中没有明确指出使用的是哪种 clk 延时函数,这里提供两种常见的 clk 延时函数的最小延时:
1. 常规的 clk 延时函数,例如使用 while 循环实现的延时函数,最小延时精度取决于程序执行的时间。一般来说,可以精确到毫秒级别,即最小延时为 1 毫秒左右。 2. 使用定时器实现的 clk 延时函数,例如使用 Systick 定时器实现的延时函数,精度可以达到微秒级别,即最小延时为几微秒左右,具体取决于定时器的时钟源和分频值。 |
|
|
|
只有小组成员才能发言,加入小组>>
883 浏览 1 评论
2278 浏览 5 评论
2590 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2397 浏览 6 评论
2300 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
448浏览 9评论
459浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
563浏览 6评论
441浏览 5评论
473浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-17 20:13 , Processed in 1.078406 second(s), Total 77, Slave 58 queries .
Powered by 电子发烧友网
© 2015 www.ws-dc.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号