[技术问答] hc32f460使用FreeRTOS,IIC初始化进入死循环

[复制链接]
3160|32
 楼主| shenguoliang 发表于 2022-10-18 14:31 | 显示全部楼层 |阅读模式
程序从以下位置直接运行到HardFault_Handler()。有哪位大牛帮我看看什么原因。 5225634e47f12d455.png
注:未运行到280行。
80569634e47a56d534.png
上述IIC初始化写在main()函数中。
50577634e47b9ed411.png
如果将IIC初始化写在任务函数中,在main函数中创建任务则可以正常运行。
66545634e4746bbaa1.png
65454634e47cae097f.png
lzmm 发表于 2022-11-2 18:58 | 显示全部楼层
这个是你的代码问题吧,查看一下是不是数组超出预期
adolphcocker 发表于 2022-11-2 19:12 | 显示全部楼层
使用的是硬件iic吗              
hearstnorman323 发表于 2022-11-2 19:30 | 显示全部楼层
单个的代码是否能够跑通呢              
macpherson 发表于 2022-11-2 20:00 | 显示全部楼层
iic不需要中断的。              
youtome 发表于 2022-11-2 20:39 | 显示全部楼层
如果硬件iic不好用,推荐软件iic,这个可靠性高一些。
macpherson 发表于 2022-11-2 21:25 | 显示全部楼层
在进行iic读取数据的时候,可以设置rtos为禁止切换
 楼主| shenguoliang 发表于 2022-11-3 15:47 | 显示全部楼层
本帖最后由 shenguoliang 于 2022-11-3 18:59 编辑

对,使用的是硬件IIC,裸机跑没有问题,使用IIC可以实现预期目标。
在此基础上加上FreeRTOS,每次初始化IIC的时候都会卡在波特率设置这一步,初始化uart的时候也是这个问题。 871463639ddeaa515.png ,点击运行下一步就跳到void HardFault_Handler(void)函数里。
但是创建一个任务,把IIC或者uart的初始化挪到任务里就可以初始化成功,功能也能正常使用。
大佬,这是什么问题。
adolphcocker 发表于 2022-11-3 20:51 | 显示全部楼层
hc32f460是自己移植 freertos操作系统吗?
belindagraham 发表于 2022-11-3 21:46 | 显示全部楼层
看看是不是没有启动iic的时钟呢?
tpgf 发表于 2022-11-4 11:38 | 显示全部楼层
如果在初始化死循环的话 建议楼主更换它的时钟源晶振
qcliu 发表于 2022-11-4 12:05 | 显示全部楼层
如果连初始化都不能通过的话 建议楼主测量一下晶振是否正常工作
drer 发表于 2022-11-4 12:14 | 显示全部楼层
调整一下串口初始化函数和iic初始化函数的顺序试试看
coshi 发表于 2022-11-4 13:37 | 显示全部楼层
还在初始化阶段的时候,不要启动一些其他功能的运行
kxsi 发表于 2022-11-4 13:46 | 显示全部楼层
楼主是在什么地方启动的系统开始运行的呢
wiba 发表于 2022-11-4 14:08 | 显示全部楼层
在线程的切换过程中会一直占用了iic的资源吗
LLGTR 发表于 2022-11-4 20:40 | 显示全部楼层
这时候汇编就有用处了。
天天向善 发表于 2022-11-4 20:42 | 显示全部楼层
你把初始化放到哪了?单步调试也不行?
kkzz 发表于 2022-11-5 09:49 | 显示全部楼层
可以将iic的中断优先级设置为最高
1988020566 发表于 2022-11-5 10:45 | 显示全部楼层
你这个没有用FreeRTOS操作系统吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
0