hc32f460使用FreeRTOS,IIC初始化进入死循环
程序从以下位置直接运行到HardFault_Handler()。有哪位大牛帮我看看什么原因。注:未运行到280行。
上述IIC初始化写在main()函数中。
如果将IIC初始化写在任务函数中,在main函数中创建任务则可以正常运行。
这个是你的代码问题吧,查看一下是不是数组超出预期 使用的是硬件iic吗 单个的代码是否能够跑通呢 iic不需要中断的。 如果硬件iic不好用,推荐软件iic,这个可靠性高一些。 在进行iic读取数据的时候,可以设置rtos为禁止切换 本帖最后由 shenguoliang 于 2022-11-3 18:59 编辑
adolphcocker 发表于 2022-11-2 19:12
使用的是硬件iic吗
对,使用的是硬件IIC,裸机跑没有问题,使用IIC可以实现预期目标。
在此基础上加上FreeRTOS,每次初始化IIC的时候都会卡在波特率设置这一步,初始化uart的时候也是这个问题。,点击运行下一步就跳到void HardFault_Handler(void)函数里。
但是创建一个任务,把IIC或者uart的初始化挪到任务里就可以初始化成功,功能也能正常使用。
大佬,这是什么问题。
hc32f460是自己移植 freertos操作系统吗? 看看是不是没有启动iic的时钟呢? 如果在初始化死循环的话 建议楼主更换它的时钟源晶振 如果连初始化都不能通过的话 建议楼主测量一下晶振是否正常工作 调整一下串口初始化函数和iic初始化函数的顺序试试看 还在初始化阶段的时候,不要启动一些其他功能的运行 楼主是在什么地方启动的系统开始运行的呢 在线程的切换过程中会一直占用了iic的资源吗 这时候汇编就有用处了。 你把初始化放到哪了?单步调试也不行? 可以将iic的中断优先级设置为最高 你这个没有用FreeRTOS操作系统吧
页:
[1]
2