你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于NUCLEO-053R8的延时现象

[复制链接]
power568 发布时间:2017-6-5 16:40
本帖最后由 power568 于 2017-6-5 16:43 编辑

     今天使用STM32CubeMx软甲生产基于NUCLEO-053R8、IAR760开发板的循环延时点亮LED工程。按理说这是个简单的试验,但是还硬是折腾了我半天,程序如下:   
  1. /* USER CODE BEGIN 0 */
  2. ////        uint32_t                testDly=0;

  3. /* USER CODE END 0 */

  4. int main(void)
  5. {

  6.   /* USER CODE BEGIN 1 */
  7.         uint32_t                testDly=0;

  8.   /* USER CODE END 1 */

  9.   /* MCU Configuration----------------------------------------------------------*/

  10.   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  11.   HAL_Init();

  12.   /* Configure the system clock */
  13.   SystemClock_Config();

  14.   /* Initialize all configured peripherals */
  15.   MX_GPIO_Init();
  16.   MX_SPI1_Init();
  17.   MX_USART1_UART_Init();
  18.   MX_USART2_UART_Init();

  19.   /* USER CODE BEGIN 2 */

  20.   /* USER CODE END 2 */

  21.   /* Infinite loop */
  22.   /* USER CODE BEGIN WHILE */
  23.   while (1)
  24.   {
  25.                 HAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
  26.                 for (testDly=0; testDly<300000; testDly++);
  27.                
  28.   /* USER CODE END WHILE */

  29.   /* USER CODE BEGIN 3 */

  30.   }
  31.   /* USER CODE END 3 */

  32. }
复制代码


     现象1:
     程序仿真单步调试时,LD2可以翻转,但是一旦全速运行,看不见翻转的现象,示波器测试后发现控制波形周期为ns级别,感觉不可能啊,这个for循环的延时应该是ms。
    开始以为是CubeMx软件配置GPIO上拉以及SPI或USART配置的影响,可以去掉以后,仍让不行,此时已经开始怀疑人生了...
    单步调试发现,for循环的变量值根本不变,将循环变量切换到全局变量后效果一样。突然想到可能是IAR配置优先等级过高的问题,打开看看,果然配置到了High,更改到Low之后,终于可以看见灯闪烁了,该死的优先级优化被默认配置为High了,犯了个低级错误,欲哭无泪...
     现象2:
    后来把延时循环变量改变为局部变量,发现闪烁的频率变高了,周期比全局变量是的要长,对比了一下汇编程序,果然不一样:
    局部变量汇编程序:
    局部变量.png
    全局变量汇编程序:
    全局变量.png

    总结:
    1. 要时刻小心谨慎,避免细节引起的大麻烦;
    2. 使用for循环延时时,同样的程序下,局部变量和全局变量延时时间是不一样的。


收藏 评论2 发布时间:2017-6-5 16:40

举报

2个回答
左岸右岸 回答时间:2017-6-5 17:09:11
为什么要用for循环做延时?
power568 回答时间:2017-6-6 09:31:22
只是做个简单的测试,然后顺带发现的问题...

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版