5221|14

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何设置驱动线程的优先级? [复制链接]

平台:S3C2440 + WINCE5.0

驱动使用中断EINT0和EINT5,大概20ms就一个中断,来了中断后就在IST中从3根GPIO口线读取300Bytes的数据

测试发现,在Wince有其他操作时,驱动IST中接收的数据会随机出现误码或者0,在IST中增加了计数器,测得中断是每次都有进入,可就是读数出现了错误。现在想把IST的优先级提高,可不知道该设置为多少好。

哪位大侠能否指点指点,CE驱动中IST的优先级该如何设置?需要注意的事项是什么呀?

最新回复

BOOL SetThreadPriority(   HANDLE hThread,   int nPriority );   详情 回复 发表于 2009-8-29 14:45
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用这个函数试试看吧
BOOL SetThreadPriority(
  HANDLE hThread,
  int nPriority
);
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
LS正解 就是个这个函数
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

4
 
BOOL CeSetThreadPriority(
  HANDLE hThread,
  int nPriority
);
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
Applications and device drivers should use the CeGetThreadPriority and CeSetThreadPriority functions, instead of the legacy functions GetThreadPriority and SetThreadPriority. The legacy functions are still available with the same interfaces but the functions have access only to the originalApplications and device drivers should use the CeGetThreadPriority and CeSetThreadPriority functions, instead of the legacy functions GetThreadPriority and SetThreadPriority. The legacy functions are still available with the same interfaces but the functions have access only to the original 8 priority levels. 8 priority levels.

SetThreadPriority是老的方法,现在最好是使用CeSetThreadPriority system call
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个正解
引用 1 楼 hzdysymbol 的回复:
用这个函数试试看吧
BOOL SetThreadPriority(
? HANDLE hThread,
? int nPriority
);
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
函数SetThreadPriority
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

8
 
BOOL SetThreadPriority(
  HANDLE hThread,
  int nPriority
);
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
SetThreadPriority
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用楼主 y2dg4lf 的回复:
驱动使用中断EINT0和EINT5,大概20ms就一个中断,来了中断后就在IST中从3根GPIO口线读取300Bytes的数据

测试发现,在Wince有其他操作时,驱动IST中接收的数据会随机出现误码或者0,在IST中增加了计数器,测得中断是每次都有进入,可就是读数出现了错误。现在想把IST的优先级提高,可不知道该设置为多少好。


1.线程优先级最高也就是“时间关键”和GUI更新一样
2.可以调用GetTickCount,看一下,读取数据所用的时间,如果不超过100ms,更改优先级不见得有效
3.“在Wince有其他操作时”,可以说一下,这些操作用涉及GPIO的使用吗,或许占用了也不一定,那就加 critical section

请教一个问题,如何控制GPIO连续读取300bytes的数据,是每隔多长时间读一次。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 visualthinking 的回复:
引用楼主 y2dg4lf 的回复:
驱动使用中断EINT0和EINT5,大概20ms就一个中断,来了中断后就在IST中从3根GPIO口线读取300Bytes的数据

测试发现,在Wince有其他操作时,驱动IST中接收的数据会随机出现误码或者0,在IST中增加了计数器,测得中断是每次都有进入,可就是读数出现了错误。现在想把IST的优先级提高,可不知道该设置为多少好。


1.线程优先级最高也就是“时间关键”和GUI更新一样
2.可以调用GetTickCount,看一下,读取数据所用的时间,如果不超过100ms,更改优先级不见得有效
3.“在Wince有其他操作时”,可以说一下,这些操作用涉及GPIO的使用吗,或许占用了也不一定,那就加 critical section

请教一个问题,如何控制GPIO连续读取300bytes的数据,是每隔多长时间读一次。



多谢!

3、“在Wince有其他操作时”,如频繁点击触摸屏,就会出现数据的中断和出错,本人是菜鸟,现在写的驱动只是功能实现,没去考虑到跟其他驱动之间的调度关系。-_-!!

“GPIO连续读取300bytes的数据”这是我没说清楚,就是 ARM发一个时钟,读一个数据实现的
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 10 楼 y2dg4lf 的回复:


3、“在Wince有其他操作时”,如频繁点击触摸屏,就会出现数据的中断和出错,
     现在写的驱动只是功能实现,没去考虑到跟其他驱动之间的调度关系。-_-!!

“GPIO连续读取300bytes的数据”这是我没说清楚,就是 ARM发一个时钟,读一个数据实现的

定时器SetTimer吗?如果是那样,应该会受到影响,在消息队列里面,时钟消息WM_TIMER的优先级比较低,如果是点击鼠标操作,消息队列就会在投递比如:WM_LBUTTONDOWN消息之后,再去投递WM_TIMER消息。就可能出现数据中断。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

13
 
SetThreadPriority
查MSDN里的Thread


 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

14
 
3根GPIO口线读取300Bytes的数据,这是什么接口的通信啊,难道是模拟时序的方式读取数据?就算楼主把线程优先级设置成0(最高级),也要考虑到ISR的优先级永远是最搞的,也要排除其对通信的影响!
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 
BOOL SetThreadPriority(
  HANDLE hThread,
  int nPriority
);
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表