你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
CUBEMX设置如上。
回调函数如下:
{ if(htim->Instance == TIM2) {LL_GPIO_TogglePin(CLK_GPIO_Port,CLK_Pin);}
调用代码如下:
USB_printf("1");
HAL_TIM_Base_Start_IT(&htim2);
USB_printf("2");
效果图如下:
串口助手收到1后不再接收并且卡死无反应,引脚正常翻转,回调函数正常执行。
举报
Counter Period=4-1
则定时器的计数值为3,这么短的定时时间,当然一直进入定时器中断。
xmshao 发表于 2023-6-6 17:56 你看看开启了哪些中断?</p> <p>
#include <stdarg.h> void USB_printf(const char *format,...) { va_list args; uint32_t length; va_start(args,format); length = vsnprintf((char *)UserTxBufferFS,APP_TX_DATA_SIZE,(char *)format,args); va_end(args); while(CDC_Transmit_FS(UserTxBufferFS,length) != USBD_OK); // CDC_Transmit_FS(UserTxBufferFS,length); }
usb是虚拟串口prinft重定义函数。由TIM2定时器产生的中断可以成功的翻转引脚电平,TIM2的中断是没有问题的。是TIM2的中断制止了其他中断和程序正常运行了。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM2) { LL_GPIO_TogglePin(CLK_GPIO_Port,CLK_Pin); } }
回调函数就是在翻转引脚电平
wenyangzeng 发表于 2023-6-6 19:57 Counter Period=4-1</p> <p>则定时器的计数值为3,这么短的定时时间,当然一直进入定时器中断。
[md]我需要一个40MHz的时钟信号,时钟树里的总线是240MHz。只能这么短了吧
butterflyspring 发表于 2023-6-7 09:53 如果是4OMhz 的翻转信号,估算一下间隔超短,中断执行不了几行代码了。所以多半中断阻塞住了。 楼主还是考 ...
说错了4MHz,但好像1MHz都达不到卡在800KHz了。
TouchGFX Designer下载工程到STM32H7S7-DK报错
为什么NucleoH7上电正常但无法烧录?连接状态一直为绿光红光交替闪烁,如何让他绿灯常亮?
多DMA数据流问题
stm32h725
非对称PWM的问题
stm32h7在移植f1的库会遇到时序问题吗
STM32H750 USB HS HOST 加 DCMI 接口不能正常工作
请问hal库的硬件spi,该怎么修改spi时钟的占空比呀?
stm32H745 M4核不能调试和下载
stm32h745 调试问题
楼主还是考虑用其他硬件方式实现这样的时钟信号吧。
如果只是使用了TIM2,看你在它的回调函数里又调用
了HAL_TIM_Base_Start_IT(&htim2);
难道你该回调函数之外做了TIM2的关闭操作?不过,这个操作应该
不是问题关键,只是写在这里又开启一次TIM2及中断有点费解。
另外,USB_printf()函数是怎么实现的?涉及到中断了吗?
建议干脆将这两个Printf调用换成2个全局变量来观察变化
并试着锁定原因。
Counter Period=4-1
则定时器的计数值为3,这么短的定时时间,当然一直进入定时器中断。
usb是虚拟串口prinft重定义函数。由TIM2定时器产生的中断可以成功的翻转引脚电平,TIM2的中断是没有问题的。是TIM2的中断制止了其他中断和程序正常运行了。
回调函数就是在翻转引脚电平
[md]我需要一个40MHz的时钟信号,时钟树里的总线是240MHz。只能这么短了吧
说错了4MHz,但好像1MHz都达不到卡在800KHz了。