|
楼主 |
发表于 2015-2-27 22:17:18
|
显示全部楼层
回 eric2013 的帖子
eric2013:
1. 中断按照你裸机时的中断方式写就行,需要中断级任务切换的话,就加上这个函数。
2. 中断优先级在裸机的时候怎么设置,在FreeRTOS里面还怎么设置。
3. 任务优先级的设置也比较简单,在一个.h文件里面配置下就行。
参考实例:
....... 这是我写的代码:
void NVIC_Configuration(void)
{
// 这个优先级怎么设置啊?
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
}
static void board_init(void)
{
delay_init();
NVIC_Configuration();
LED_Init();
uart_init(9600);
EXTIX_Init();
}
int main(void)
{
board_init();
xQueue = xQueueCreate(3, sizeof(xData));
xTaskCreate(vSenderTask, "sender 1", 1000, (void *)&(xStructData[0]), 2, NULL);
xTaskCreate(vSenderTask, "sender 2", 1000, (void *)&(xStructData[1]), 2, NULL);
xTaskCreate(vReceiverTask, "receiver", 1000, NULL, 1, NULL);
vTaskStartScheduler();
for(;;);
}
// 按键中断,这样写可以吗?
void EXTI0_IRQHandler(void)
{
// 利用延时去按键抖动怎么写啊?
//delay_ms(10); //Ïû¶¶
// 这样写可以吗
//vTaskDelay(10/portTICK_RATE_MS);
if(WK_UP==1)
{
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line0); //Çå³ýEXTI0Ïß·¹ÒÆðλ
}
void EXTI9_5_IRQHandler(void)
{
//delay_ms(10); //Ïû¶¶
//vTaskDelay(10/portTICK_RATE_MS);
if(KEY0==0) {
LED0=!LED0;
}
EXTI_ClearITPendingBit(EXTI_Line5); //Çå³ýLINE5ÉϵÄÖжϱê־λ
}
void EXTI15_10_IRQHandler(void)
{
//delay_ms(10); //Ïû¶¶
//vTaskDelay(10/portTICK_RATE_MS);
if(KEY1==0)
{
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line15); //Çå³ýLINE15Ïß·¹ÒÆðλ
} |
|