lovecomputer 发表于 2022-6-2 09:54:31

关于FreeRTOS的us级延时和任务划分

关于FreeRTOS小白提问:
1、FreeRTOS里面的时钟默认我看是设置成1ms(#define configTICK_RATE_HZ                                ( ( TickType_t ) 1000 )),
也就是1ms切换任务,那如果我要用I2C如何实现us级别的延时呢?
2、如果我找到了us级的延时,是否是读写i2C时程序循环等待i2C的时序,这和操作系统轮流使用CPU的思路对应不上呢?
3、如果我有这样的需求:读个i2c数据,根据数据PWM方式控制IO,再读i2C和AD,业务逻辑后输出DA、输出到串口数据、输出到I2C,我大致如何建任务呢?

eric2013 发表于 2022-6-3 00:27:03

关于I2C的问题是这样,裸机和OS下一个用法即可。

很多I2C器件是边沿触发识别,高低电平时间长点不影响。
1、容错,像ADC,传感器类I2C,出错没关系,使用下次的。稍微影响的像EEPROM,做好应答,错误了重新写入即可。
2、不是很频繁的读写,放在稍微高优先级的任务执行即可,只要不是任务打断,仅中断打断基本影响不大。

caicaptain2 发表于 2022-6-6 10:39:56

本帖最后由 caicaptain2 于 2022-6-6 10:43 编辑

eric2013 发表于 2022-6-3 00:27
关于I2C的问题是这样,裸机和OS下一个用法即可。

很多I2C器件是边沿触发识别,高低电平时间长点不影响。 ...
OS下,有函数可以禁止任务切换。 比如参考 https://blog.csdn.net/qq_15181569/article/details/105528699
参考 http://t.zoukankan.com/yangguang-it-p-7168336.html

13756039532 发表于 2022-8-29 17:16:46

IIC总线us级延时操作期间进入临界区,这样就不会进行任务调度了。
页: [1]
查看完整版本: 关于FreeRTOS的us级延时和任务划分