tzz1983
发表于 2023-9-14 16:17:14
杨为民 发表于 2023-9-14 15:01
“杨老师, 这是为何呢? ”——你的意思其实是:我为什么盯着你不停地说,口气又不好,而且经常说的还不对 ...
杨老师, 你说会不出现这一暮, 你发的那个"临界区保护嵌套测试程序" 又被发现是一个瓜, {:4_165:}, 这个念头在我脑海中一闪而过, 顺带就发出来了, 哈哈, 开玩笑了哈, 回头我去看看
熊仔
发表于 2023-9-14 17:48:22
本帖最后由 熊仔 于 2023-9-14 18:00 编辑
这个临界区嵌切换任务的例子,如果STC改硬件,搞一个可以屏蔽优先级的中断的寄存器。就是pendSV中断可以执行,其他中断不能执行。这样就好解决。
我当初也说移植到STM32的ucos例子也不能运行这个例子,杨老师说是移植者水平问题。其实ARM contex确实可以有办法运行,可以通过basepri寄存器屏蔽对应的优先级。
但是一般不会去这么弄。这个basepri寄存器的使用,freeRTOS移植到STM32的版本有用到。一般是设定高于这个优先级的不受系统管理。类似我在STC8 uCOS2给的中断不能嵌套例子一样。紧急事件不受系统管理。
当然迫不得已也是可以有办法的,检测到处于嵌套中,又需要切换任务,单独调用切换函数,需要另外写一个。
感觉没必要折腾。
神农鼎
发表于 2023-9-14 18:16:31
我请教个其他问题:
我们STC8H8K64U/STC32G12K128的【定时器0的模式3】,
是不可屏蔽的16位自动重装载定时器,请问哪些场合可以发挥作用 ?
不可屏蔽的定时器:
1,打开后,不能被关闭;
2,是最高优先级,比其他普通中断的优先级高
tzz1983
发表于 2023-9-14 18:51:22
神农鼎 发表于 2023-9-14 18:16
我请教个其他问题:
我们STC8H8K64U/STC32G12K128的【定时器0的模式3】,
是不可屏蔽的16位自动重装载定时 ...
记得手册好像说可以做时钟滴答信号, 但又貌似作时钟滴答信号不用最高优先级吧, 没有深研, 望正解
tzz1983
发表于 2023-9-14 19:46:08
熊仔 发表于 2023-9-14 17:48
这个临界区嵌切换任务的例子,如果STC改硬件,搞一个可以屏蔽优先级的中断的寄存器。就是pendSV中断可以执 ...
熊仔,你在说什么,难以理解。PendSV一般是设为最低级优先级啊。
刚才看到神农的提问,我还奇怪了,现在明白,估计八成是来问你的,你去回复吧
tzz1983
发表于 2023-9-14 19:53:35
熊仔 发表于 2023-9-14 17:48
这个临界区嵌切换任务的例子,如果STC改硬件,搞一个可以屏蔽优先级的中断的寄存器。就是pendSV中断可以执 ...
另外是想不被中断直接临界段就可以了,高优先级中断用作切换不符合逻辑,再者UCOS本来就有一个中断嵌套计数器,本身就不会发生任务嵌套切换,这些都是你们自己臆想出来的。其实你不用这么费心的,别人都已经想好了
熊仔
发表于 2023-9-14 20:24:50
tzz1983 发表于 2023-9-14 19:46
熊仔,你在说什么,难以理解。PendSV一般是设为最低级优先级啊。
刚才看到神农的提问,我还奇怪了,现在 ...
就是需要厂家能做一个能改优先级的。并且可以在关闭中断的时候能响应自身中断的。
RTOS一般是最低优先级。
定时器0模式3不适合。
tzz1983
发表于 2023-9-14 20:32:34
你说的是想要关闭部分优先级吧, 这个51内核应该不会去做, 关键是牵一发而动全身, 硬件需要改动太多了. 在现有基础上去实现你要的功能. 尽量不提先决条件
熊仔
发表于 2023-9-14 20:47:27
{:4_167:},这些都是空谈。
杨为民
发表于 2023-9-14 21:15:19
本帖最后由 杨为民 于 2023-9-14 21:44 编辑
tzz1983 发表于 2023-9-14 16:11
没时间了, 我有工作任务了, 以前再聊吧
关于你说的几点, 我回应一下:
“.STC32G12K128之前有人发过UCOS的版本吗, 我为什么看不到呢, 早知道有现成的, 两天的时间我也不想去浪费的, 哈哈”
晚了,从此以后你得为你的荣誉战斗到底了