问答

汇集网友智慧,解决技术难题

290399937

TA的家园币:201  

  • 华大MUC HC32F460同样的程序运行速度不一致

    华大MUCHC32F460同样的程序运行速度不一致,在不加BOOTLOADER的前提下运行的速度远低于加了BOOTLOADER的运行速度。问题补充:①Bootloader的的时钟初始化与应用程序的时钟初始化是一致的②在不使用Bootloade的情况下应用程序直接烧入在FLASH的0x0地址的运行速度远低于在使用了Bootloader后应用程序的烧入地址为0xA000的运行速度③测试代码是一致的为软件模拟的延迟,如下所示voiddelay_ms(uint16_tms){uint32_tms_t=100*ms;while(ms_t--);}

  • 求多任务系统中步进减速电机平稳运行的思路

    调了好几天都没搞定,发现步进电机驱动起来很简单,但是要想电机转动平稳太难了,尤其是在多任务的系统中。用的是24BJY48步进减速电机,四相八拍方式,步距角是5.625°,用的是脉冲驱动方式。我的系统现在有多个任务,就是在while(1)循环中有好几个函数需要执行,步进电机驱动是其中一个,现在如果把步进电机测试函数单独放在while(1)中,如下intmain(void){while(1){motor_test();//步进电机驱动}}那么步进电机运转很丝滑,很平稳,我通过多次调试找到了延时设置为1500us时,电机运转最平稳,当然这只限于while(1)中只有这一个函数时,如果我同时运行其他任务,如下intmain(void){while(1){motor_test();//步进电机驱动read_sensor();status_update();}}voidmotor_test(){PAH;PBL;PCL;PDL;SysTick_delay_us(1500);PAH;PBH;PCL;PDL;SysTick_delay_us(1500);PAL;PBH;PCL;PDL;SysTick_delay_us(1500);PAL;PBH;PCH;PDL;SysTick_delay_us(1500);PAL;PBL;PCH;PDL;SysTick_delay_us(1500);PAL;PBL;PCH;PDH;SysTick_delay_us(1500);PAL;PBL;PCL;PDH;SysTick_delay_us(1500);PAH;PBL;PCL;PDH;SysTick_delay_us(1500);}那么,电机会转起来,但是会产生震动,怎么调整延时值都没用,1500上下的延时我都试过了,一样震动,可能有人会说,用定时器中断,我当然试过,而且调试了很长时间,一样的结果也是震动,我知道是其他程序影响了电机运转,但不至于对时间要求这么精确把?其他的程序执行会分掉时间,但不至于会影响到电机这么严重吧?实际项目中不可能只有电机控制这一个函数,肯定是多个函数一起运行的。我甚至把这两个函数read_sensor();和status_update();用时间片轮询的方法写了一遍,就是给他们分配更长的执行时间,让步进电机执行时间尽可能短,也还是不行,还是震动。真的没有思路了,大家有什么好的思路吗?可以解决震动问题

    2022-08-03 16
  • 关于单片机运行异常擦除flash数据的问题

    采用32F103系列单片机,程序具有远程更新功能,通过串口(此串口同时收发其它采集数据)接收更新程序,执行flash擦写指令,把串口收到的缓存数据写到指定内存地址;现在存在问题是设备使用环境可能有电磁干扰,造成flash擦写指令把串口缓存的其它采集数据写到了程序更新区域,造成程序损坏,无法正常运行;此种情况有无程序保护的措施?软件层面程序擦写指针都有可能异常跳转;硬件层面增加硬件看门狗是否也有可能单片机定时器异常,造成喂狗失败?

    单片机 干扰 异常 flash

    2022-06-14 4