当前位置: 首页 > news >正文

网站明确内容中国制造网入驻

网站明确内容,中国制造网入驻,上海专业做网站建设方法,点金推广优化公司串行驱动的关键是双方能够按照既定的时序进行检测、设置相关引脚上的电平,比如单总线、I2c这样基本的可以用GPIO模拟的时序协议,需要主从双方,必须在链路接口内严格按照微妙级的延迟单位进行时序同步。 所以,在这种对时间要求很敏…

     串行驱动的关键是双方能够按照既定的时序进行检测、设置相关引脚上的电平,比如单总线、I2c这样基本的可以用GPIO模拟的时序协议,需要主从双方,必须在链路接口内严格按照微妙级的延迟单位进行时序同步。 所以,在这种对时间要求很敏感的情况下,一般都会考虑到用循环等待检测的方式来拖住时间窗,而且近似微妙的阻塞等待一般也不会对整个系统的用户体验造成太大的影响。 下面是在实际经验中积累的,微妙延迟的方法。

1. ARM-CORTX-M0  

   M0 HC32F110L上的延迟,可以精准到微妙。可以用systic,也可用while阻塞循环等待。

/******************************************************************************* systic * xus:*     use this delay function when time >= 20 
*******************************************************************************/
void jbf_systic_us_ex(uint32_t xus)
{ SysTick->LOAD = (xus - 18) * (JBF_SISTICK_VALUE / 1000000);SysTick->VAL = 0;SysTick->CTRL = 0x01;while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));SysTick->CTRL &= ~(0x01 << SysTick_CTRL_ENABLE_Pos);
}
/******************************************************************************* 24M 1US delay,* ??????????????1us??????
*******************************************************************************/void jbf_delay_24M_us(void)
{int xus = 1;while( xus--){__NOP();__NOP();}}void jbf_delay_24M_xus(uint16_t xus)
{uint16_t j;while (xus--){j = 2; //while (j--);}
}

2. ARM-CORTEX-M4

/*********************************************************** DEC:  200M MPLL us delay function.* PARAM: n = nus* RETURN: none
***********************************************************/
void delay_nus(uint16_t n)
{uint16_t j;while(n--){j = DELAY_ADJUSTMENTS;// while(j--);}
}
extern uint32_t SystemCoreClock;        /*!< System clock frequency (Core clock) */
/**** * base interval is 60 when LOAD  = 1, LOAD + 1 lead the timme plus 30us* if the value lager than 60, and times of 30, then use this function* (time - 60) / 30 - 1;* time = 180 , load = (180 - 60) / 3 + 1 = 5;* */void delay_30Tnus(uint16_t n)
{uint32 _load =  (n - 60) / 10 / 3 + 1;SysTick->LOAD = _load;SysTick->VAL = 0;SysTick->CTRL = 0x01;while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));SysTick->CTRL &= ~(0x01 << SysTick_CTRL_ENABLE_Pos);
}/*********************************************************** DEC:  200M MPLL ms delay function.* PARAM: n = mus* RETURN: none
***********************************************************/
void delay_nms(uint16_t n)
{while(n--){delay_nus(1000);}
}

实际就两种方式比较通用的,一个是systic,这个真的要看systic分到的频率了, 如果本身频率很低,那么在微妙的精度行还是有些误差的。

另一种方式就是利用CPU的加法周期来做延迟,这个目前看来也有一定的可用性,关键是要找好指令周期的倍数。拿示波器实际调试可以作证得出最精准的延迟。

/*DELAY   HC32F60,pclk 200MHZ*/

#define DELAY_ADJUSTMENTS 12 

void delay_nus(uint16_t n)
{
  uint16_t j;
  while(n--)
  {
    j = DELAY_ADJUSTMENTS;// 
    while(j--);
  }
}

http://www.yayakq.cn/news/339017/

相关文章:

  • 做网站的电脑实木餐桌椅移动网站建设
  • 购物网站开发的意义和目的网站建设主流技术及效果
  • 如何注册网站免费的吗互联网o2o是什么意思
  • 建设个人网站可以卖产品吗扬中论坛网官网
  • 网站运行环境建设方案上海有什么大企业
  • 沈阳高端网站定制开发网页设计的网站
  • 福州企业网站建站模板商城网站建设模板
  • 苏州网站开发找哪家网页升级访问未成年
  • 网站排名优化策划做网站提成
  • .电子商务网站规划wordpress文章前阅读
  • 网站怎么做营销php网站功能
  • 浙江短视频seo优化网站wordpress首页设计
  • 长沙做网站nn微联讯点很好onethink做移动网站
  • 免费建网站那个软件好模板支架
  • win7在局域网做网站网站建设费专票会计分录
  • 做网站 360的好不好seo专员是什么意思
  • 江油网站建设seo在线优化系统
  • 商城网站不易优化wordpress全景图片
  • 可视化开发企业网站seo
  • 网站制作与维护费用重庆市建设工程信息网 安全监督
  • 西安网站开发方案酒店网站制作策划
  • 哈尔滨网站推广服务给公司做网站要多少钱
  • 网站结构分析学大教育一对一收费价格表
  • 网站集约化建设汇报外贸业务怎么利用网站开发客户
  • wordpress的网站怎么保存做网站如何推广买量
  • 四川省住房与建设厅网站wordpress主题no.7
  • 做竞赛的平台或网站页面设计软件有哪些
  • 怎么把网站制作成安卓wordpress摘要设置
  • 上市公司查询网站服装网站建设公司好吗
  • 导入到wordpress门户网站怎么做seo