
打算测试STM32C031C6开发板的长短按键,在按键中断处理程序中使用HAL_Delay()延时函数,程序则无法运行,类似进入了死循环,于是则添加了延时函数如下: /------------------------------------------------------------ us延时函数 ------------------------------------------------------------/ void delay_us(uint16_t us) { uint16_t n; while(us--)for(n=0; n<CLOCK; n++); } /------------------------------------------------------------ ms延时函数 ------------------------------------------------------------/ void delay_ms(uint16_t ms) { while(ms--)delay_us(1000); } 但在测试过程中发现延时函数似乎被优化了,不起任何作用。我使用驱动LED翻转的方式进行测试,无论如何设置延时时间,LED引脚的翻转时间一直都是1.333us左右,不会随延时的设置时间改变而变化,不知是何原因引起的。 这是用逻辑分析仪抓取的LED引脚时序图: 测试的代码如下图: |
STM32C092如果不使用CAN,内存可不可以拿出来用。
NUCLEO-C031C6开发板测试1——点灯及用户按键
NUCLEO-C031C6开发板测试3——RTC的读写操作
NUCLEO-C031C6开发板测试2——定时器及PWM应用
STM32C051K8T6电路这样设计对不对
STM32c031c6 SPI Slave Transmit Only模式的疑问
STM32C031C6开发板的UART2的收发问题?
从哪里可以下载NUCLEO-C3C6开发板的范例?
stm32c011的NRST引脚复用问题
求STM32C011J4x STM32C011J6x 的标准库。
添加volatile uint16_t n
延时函数粘贴过来后格式变了失去了换行符号,换成截图如下:
谢谢!按照您的建议解决了问题。
按键中断函数中不应该调用HAL_Delay()函数。用__nop()软件延时。
是的,在中断处理函数中不能调用系统的HAL_Delay()函数,必须自己另写延时函数,否则就无法运行。