打印
[技术问答]

hc32f460使用FreeRTOS,IIC初始化进入死循环

[复制链接]
2053|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
程序从以下位置直接运行到HardFault_Handler()。有哪位大牛帮我看看什么原因。
注:未运行到280行。

上述IIC初始化写在main()函数中。

如果将IIC初始化写在任务函数中,在main函数中创建任务则可以正常运行。

66545634e4746bbaa1.png (70.44 KB )

66545634e4746bbaa1.png

65454634e47cae097f.png (70.44 KB )

65454634e47cae097f.png

使用特权

评论回复
沙发
lzmm| | 2022-11-2 18:58 | 只看该作者
这个是你的代码问题吧,查看一下是不是数组超出预期

使用特权

评论回复
板凳
adolphcocker| | 2022-11-2 19:12 | 只看该作者
使用的是硬件iic吗              

使用特权

评论回复
地板
hearstnorman323| | 2022-11-2 19:30 | 只看该作者
单个的代码是否能够跑通呢              

使用特权

评论回复
5
macpherson| | 2022-11-2 20:00 | 只看该作者
iic不需要中断的。              

使用特权

评论回复
6
youtome| | 2022-11-2 20:39 | 只看该作者
如果硬件iic不好用,推荐软件iic,这个可靠性高一些。

使用特权

评论回复
7
macpherson| | 2022-11-2 21:25 | 只看该作者
在进行iic读取数据的时候,可以设置rtos为禁止切换

使用特权

评论回复
8
shenguoliang|  楼主 | 2022-11-3 15:47 | 只看该作者
本帖最后由 shenguoliang 于 2022-11-3 18:59 编辑

对,使用的是硬件IIC,裸机跑没有问题,使用IIC可以实现预期目标。
在此基础上加上FreeRTOS,每次初始化IIC的时候都会卡在波特率设置这一步,初始化uart的时候也是这个问题。 ,点击运行下一步就跳到void HardFault_Handler(void)函数里。
但是创建一个任务,把IIC或者uart的初始化挪到任务里就可以初始化成功,功能也能正常使用。
大佬,这是什么问题。

使用特权

评论回复
9
adolphcocker| | 2022-11-3 20:51 | 只看该作者
hc32f460是自己移植 freertos操作系统吗?

使用特权

评论回复
10
belindagraham| | 2022-11-3 21:46 | 只看该作者
看看是不是没有启动iic的时钟呢?

使用特权

评论回复
11
tpgf| | 2022-11-4 11:38 | 只看该作者
如果在初始化死循环的话 建议楼主更换它的时钟源晶振

使用特权

评论回复
12
qcliu| | 2022-11-4 12:05 | 只看该作者
如果连初始化都不能通过的话 建议楼主测量一下晶振是否正常工作

使用特权

评论回复
13
drer| | 2022-11-4 12:14 | 只看该作者
调整一下串口初始化函数和iic初始化函数的顺序试试看

使用特权

评论回复
14
coshi| | 2022-11-4 13:37 | 只看该作者
还在初始化阶段的时候,不要启动一些其他功能的运行

使用特权

评论回复
15
kxsi| | 2022-11-4 13:46 | 只看该作者
楼主是在什么地方启动的系统开始运行的呢

使用特权

评论回复
16
wiba| | 2022-11-4 14:08 | 只看该作者
在线程的切换过程中会一直占用了iic的资源吗

使用特权

评论回复
17
LLGTR| | 2022-11-4 20:40 | 只看该作者
这时候汇编就有用处了。

使用特权

评论回复
18
天天向善| | 2022-11-4 20:42 | 只看该作者
你把初始化放到哪了?单步调试也不行?

使用特权

评论回复
19
kkzz| | 2022-11-5 09:49 | 只看该作者
可以将iic的中断优先级设置为最高

使用特权

评论回复
20
1988020566| | 2022-11-5 10:45 | 只看该作者
你这个没有用FreeRTOS操作系统吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

1

粉丝