|
楼主 |
发表于 2015-9-24 20:11:29
|
显示全部楼层
回 eric2013 的帖子
eric2013:保证先创建,后使用,在RTC中断里面的post函数是不是比创建函数先执行了。 (2015-09-24 14:45) 你好,我刚刚已经确认了,这个rtc 的信号量 确实是先创建的,请教下还有什么其他的原因啊 ???
任务如下:
void AppTaskRtc (void *p_arg)
{
OS_ERR err;
(void)p_arg; /* 避免编译器报警 */
// rtc 显示顶部显示条颜色
GUI_SetBkColor(GUI_LIGHTBLUE);
GUI_ClearRect (0, 0, 320-1, LCD_RTC_TOP_DISP_Y_ADDR); // 显示顶部矩形颜色
GUI_SetBkColor(GUI_WHITE);
GUI_ClearRect(0, LCD_RTC_TOP_DISP_Y_ADDR, 320-1, 480-1);
while(1)
{
// 如果把创建信号量1,2互换,那么此处等待信号量无效,也就是当程序调度到此时会不停的运行,
OSSemPend(&SEM_RTC,
0, //如果这个参数设置为0就一直等待下去
OS_OPT_PEND_BLOCKING, //如果没有信号量可用就等待
0, //这个参数是指向存放信号量被提交、强制解除等待状态、或者信号量被删除的时间戳
&err);
{
printf("\\r\\nSEM_RTC %d", 27);
RTC_Display();
GUI_SetFont(GUI_FONT_8X16);
}
BSP_OS_TimeDlyMs(10);
}
}
// 按键发送 key信号量
void AppTaskUserIF(void *p_arg)
{
static uint8_t uKeyCode=0;
(void)p_arg;
while (1)
{
BSP_OS_TimeDlyMs(10);
uKeyCode = bsp_GetKey();
if(uKeyCode != KEY_NONE)
{
if(uKeyCode == KEY_DOWN_UP)
{
DispTaskInfo();
}
else if(uKeyCode == KEY_DOWN_DOWN)
{
BSP_OS_SemPost(&SEM_KEY); // 发送按键信号量
}
}
}
}
static void AppTaskUsbh(void *p_arg)
{
OS_ERR err;
(void)p_arg;
while(1)
{
OSSemPend(&SEM_KEY, // 等待按键信号量
0,
OS_OPT_PEND_BLOCKING,
0,
&err);
LED1 ^= 1;
BSP_OS_TimeDlyMs(10);
}
} |
|