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

学校网站报价单创立外包网站

学校网站报价单,创立外包网站,网站制作原理,网站建设准备资料表格STM32cubeMX版本#xff1a;6.11.0 现象 STM32cubeMX配置Systick的时钟#xff0c;不管选择不分频 还是8分频。 生成的代码都是一样的#xff0c;代码都是不分频。 即不管选择不分频还是8分频#xff0c;Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_Init…STM32cubeMX版本6.11.0 现象 STM32cubeMX配置Systick的时钟不管选择不分频 还是8分频。 生成的代码都是一样的代码都是不分频。 即不管选择不分频还是8分频Systick都是使用的系统时钟 函数调用 HAL_Init() → HAL_InitTick(TICK_INT_PRIORITY) → HAL_SYSTICK_Config(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) → SysTick_Config(TicksNumb) 各个函数的源码如下所示 __weak HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {/* Check uwTickFreq for MisraC 2012 (even if uwTickFreq is a enum type that dont take the value zero)*/if((uint32_t)uwTickFreq 0UL){return HAL_ERROR;}/* Configure the SysTick to have interrupt in 1ms time basis*/if (HAL_SYSTICK_Config(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) 0U){return HAL_ERROR;}/* Configure the SysTick IRQ priority */if (TickPriority (1UL __NVIC_PRIO_BITS)){HAL_NVIC_SetPriority(SysTick_IRQn, TickPriority, 0U);uwTickPrio TickPriority;}else{return HAL_ERROR;}/* Return function status */return HAL_OK; }uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) {return SysTick_Config(TicksNumb); }__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks) {if ((ticks - 1UL) SysTick_LOAD_RELOAD_Msk){return (1UL); /* Reload value impossible */}SysTick-LOAD (uint32_t)(ticks - 1UL); /* set reload register */NVIC_SetPriority (SysTick_IRQn, (1UL __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */SysTick-VAL 0UL; /* Load the SysTick Counter Value */SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk |SysTick_CTRL_TICKINT_Msk |SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */return (0UL); /* Function successful */ }可以看到 HAL_SYSTICK_Config(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) 括号里的(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) 会被设置为SysTick的LOAD寄存器即重装载值。 SysTick-LOAD (uint32_t)(ticks - 1UL); /* set reload register */ Cortex M7内核手册有对Systick 的控制和状态寄存器的介绍。 bit2 CLKSOURCE 表明了Systick的时钟源。 为1 时时钟源为处理器时钟即系统时钟也就是不分频或者说1分频。 为0 时时钟源为外部时钟也就是系统时钟的8分频。 而Systick的控制与状态寄存器的时钟源选择位设为1。 SysTick-CTRL SysTick_CTRL_CLKSOURCE_Msk即使用系统时钟。 不管选择不分频还是8分频生成的代码都是这样的也就是SysTick一直使用的是系统时钟。 配置时钟源HAL_SYSTICK_CLKSourceConfig 其实HAL是有选择时钟源的函数的就是HAL_SYSTICK_CLKSourceConfig。 源码如下 /*** brief Configures the SysTick clock source.* param CLKSource specifies the SysTick clock source.* This parameter can be one of the following values:* arg SYSTICK_CLKSOURCE_HCLK_DIV8: AHB clock divided by 8 selected as SysTick clock source.* arg SYSTICK_CLKSOURCE_HCLK: AHB clock selected as SysTick clock source.* retval None*/ void HAL_SYSTICK_CLKSourceConfig(uint32_t CLKSource) {/* Check the parameters */assert_param(IS_SYSTICK_CLK_SOURCE(CLKSource));if (CLKSource SYSTICK_CLKSOURCE_HCLK){SysTick-CTRL | SYSTICK_CLKSOURCE_HCLK;}else{SysTick-CTRL ~SYSTICK_CLKSOURCE_HCLK;} }我们可以看到 配置时钟源也就是设置状态与控制寄存器SysTick-CTRL。 但是这个函数从未被调用。 继续文件搜索这个函数 在stm32h7xx_hal_cortex.c文件中 发现了这么一段注释 You can change the SysTick Clock source to be HCLK_Div8 by calling the macro HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8) just after the HAL_SYSTICK_Config() function call. The HAL_SYSTICK_CLKSourceConfig() macro is defined inside the stm32h7xx_hal_cortex.h file. 你可以通过在这个函数HAL_SYSTICK_Config()之后调用HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8)来更改SysTick的时钟源为HCLK_Div8 。 验证 我们来实验一下 main中的大循环里只有一个点灯程序每1s切换一次。 修改HAL_SYSTICK_Config函数在SysTick_Config之后调用HAL_SYSTICK_CLKSourceConfig。 uint32_t HAL_SYSTICK_Config(uint32_t TicksNumb) {//return SysTick_Config(TicksNumb);uint32_t ret 0;ret SysTick_Config(TicksNumb);HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK_DIV8);return ret; }现象led灯由原来的1s切换一次变为8s切换一次。 这是因为SysTick的频率变为原来的1/8。 但是重装载值依然为原来1ms时的装载值(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq)) 。 也就是重装载值没变但是速度变慢了8倍。 将(SystemCoreClock / (1000UL / (uint32_t)uwTickFreq))修改为 (SystemCoreClock/ 8 / (1000UL / (uint32_t)uwTickFreq))。 现象led灯1s切换一次。
http://www.w-s-a.com/news/615838/

相关文章:

  • 学校响应式网站模板下载仙居住房和城乡建设规划局网站
  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要
  • ftp 网站管理电商网站设计图片
  • 惠州免费建站模板营销型旅游网站建设
  • 南宁cms建站wordpress 开启缩略图
  • 网站模板软件网站admin密码
  • 网站信息做参考文献射阳做企业网站多少钱
  • 网站外部优化的4大重点外贸站外推广
  • 宁波网站建设活动德州乐陵德州seo公司
  • 网站网址相对路径如何设置wordpress怎么加快网站打开速度
  • 有没有能帮人快速网站备案的机构网站建设与制作总结