Image
Image

恩成

+ 关注

粉丝 0     |     主题 4     |     回帖 24

GD32F330
2023-4-7 15:07
  • GigaDevice GD32 MCU
  • 7
  • 1035
  问题解决了,无语了,中断在清理外停止标志位后,会关闭I2C中断,所以要再开一次中断才行。 ...  
  大佬们来点建议吧  
  有大佬遇到过这种问题吗,太难受了  
  这是我的接收中断函数,基本都是从官方的例程里找的。 void I2C0_EV_IRQHandler(void) { if(i2c_i ...  
  我用的是从机接收中断模式来进行从机数据传输的。 这是我的初始化函数: void i2c0_config(void) { i2c_rcu ...  
  第二次传输的时候,就这剩下地址了,GD32作为从机没有响应  
  这个是第一次传输的数据,地址正常,数据内容也没问题  
GD32定时器触发HardFault_Handler
2022-11-21 15:32
  • GigaDevice GD32 MCU
  • 25
  • 6510
  只能说切记不能在中断中放控制操作,特别是一些高频中断  
  我把中断里的程序全部删除了,然后只做标志位判断,包操作放在主程序里面就好解决了,打印也正常了 ...  
  没有用中断,就是初始化之后重定向了一下  
  串口打印没有用中断,就是简单的初始化,重定向了一下  
  改成1ms一次,发现效果更差了,之前在if语句前加个打印函数,if里面的还能照常执行。现在直接卡在中断里 ...  
  我通过串口调试,然后用MSP定位到了NVIC初始化模块这部分,难道是初始化没对嘛 ...  
  通过调试我的错误是0xFFFFFFF9,然后我发现两种寻址方式的报错也不一样,通过“Show Disassemblyat Address ...  
  但是中断程序的判断外打印是正常的,难道是判断+打印两个一起的时间太长了? ...  
  意思是直接用UART发送嘛?  
  我把ssi_readangle()注释了,就直接打印time的数值也不行,还是同样的问题。  
  这里是注释错了,之前用的变量定义的就是time,这里粘贴的时候注释改错了。这里把变量统一为i,还是一样 ...  
  通过调试模式发现在if语句if(time ==0)打断点,可以执行到;把断点打到printf就跑不动了,进入hardfault函 ...  
2
3
近期访客