打印
[技术问答]

新唐的NUC123SD4ANO芯片如何做精确延时

[复制链接]
3038|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们都知道简单普通的延时函数利用一个递增和递减循环进行软件延时就可以做到,但是在利用NUC123系列芯片的GPIO模拟TCD1103传感器的驱动时序时遇到一个问题,就是怎样产生一段较为精确的延时。毕竟像这样的时序的延时是必须要做到相对精确的,在STM32中我们可以通过SysTick定时器做到精确延时。、那么问题来了,在新唐NUC123系列芯片中如何做到?我其实也想用STM32,但是新唐芯片的使用时上面强制要求的,希望懂这个的技术大神给出答案。
沙发
Howard16| | 2015-7-29 13:40 | 只看该作者

新唐的MCU也都有SysTick可以用,BSP已經有建好相關函數在clk.h裡面

可參考如下:精準度可到微秒

/**
  * @brief      This function execute delay function.
  * @param      us  Delay time. The Max value is 2^24 / CPU Clock(MHz). Ex:
  *                             50MHz => 335544us, 48MHz => 349525us, 28MHz => 699050us ...
  * @return     None
  * @Details    Use the SysTick to generate the delay time and the UNIT is in us.
  *             The SysTick clock source is from HCLK, i.e the same as system core clock.
  */
static __INLINE void CLK_SysTickDelay(uint32_t us)
{
    SysTick->LOAD = us * CyclesPerUs;
    SysTick->VAL  = (0x00);
    SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_ENABLE_Msk;

    /* Waiting for down-count to zero */
    while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
}

使用特权

评论回复
板凳
Carol_lovecat| | 2015-7-29 17:15 | 只看该作者

使用特权

评论回复
地板
mintspring| | 2015-7-29 23:35 | 只看该作者
根本没有精确延时的说法,定时器就行了

使用特权

评论回复
5
嵌入式初涉江湖|  楼主 | 2015-7-30 15:52 | 只看该作者
mintspring 发表于 2015-7-29 23:35
根本没有精确延时的说法,定时器就行了

相对

使用特权

评论回复
6
嵌入式初涉江湖|  楼主 | 2015-7-30 15:56 | 只看该作者
Howard16 发表于 2015-7-29 13:40
新唐的MCU也都有SysTick可以用,BSP已經有建好相關函數在clk.h裡面

可參考如下:精準度可到微秒

谢谢!

使用特权

评论回复
7
mintspring| | 2015-7-31 18:57 | 只看该作者
相对来讲,那个你要用示波器了,用示波器判断长度。

使用特权

评论回复
8
598330983| | 2015-7-31 21:05 | 只看该作者
精确延时,这个东西只能想想。

使用特权

评论回复
9
598330983| | 2015-8-2 18:39 | 只看该作者
定时器延时,配置个高精度的晶振。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝