2018-03-29 07:02 AM
hi,
i had 3created three tasks, one for sd card writing another for interrrupt and another for displaying purpose. interrupt task is not running when sd card task is created . ///task creationxTaskCreate(vvDisplayTask, (const char) 'vDisplayTask', 128, NULL, tskIDLE_PRIORITY, NULL);
xTaskCreate(myint_task, (const char) 'int task', 128, NULL, tskIDLE_PRIORITY, &myint_handle); xTaskCreate(vSDTASK, (const char) 'vSDTASKsd', 128, NULL, tskIDLE_PRIORITY, NULL);
vTaskStartScheduler()
/// my three tasks
void vSDTASK(void p) {
FATFS fs;
FIL fil; FRESULT res; FILINFO MyFileInfo; DIR MyDirectory; UINT BytesWritten; UINT BytesRead; for(;;) {if(f_mount(&fs, '',1)== FR_OK) { GPIO_SetBits(GPIOC, GPIO_Pin_15); } if(f_open(&fil, 'carddaa.txt', FA_OPEN_ALWAYS | FA_WRITE)== FR_OK) { GPIO_SetBits(GPIOA, GPIO_Pin_1); res = f_write(&fil, 'just testing', 15, &BytesRead); } if(f_close(&fil)==FR_OK) { GPIO_SetBits(GPIOC, GPIO_Pin_14); } vTaskDelay(100000/portTICK_RATE_MS); } ///2 Task void myint_task( void * p )///interrupt task which is port yielding from ISR
{
while(1) { vTaskSuspend(NULL); USART_PutStr('pressed'); count++; } } void EXTI15_10_IRQHandler(void)// for interrupt task { BaseType_t checkIfYieldRequired; checkIfYieldRequired=xTaskResumeFromISR(myint_handle); portYIELD_FROM_ISR(checkIfYieldRequired); EXTI_ClearITPendingBit(EXTI_Line12);}
/// 3 Task
void vDisplayTask( void * p ) { for(;;) { value=(count/4000)*60; //count=0;USART_PutStr('\r\n');
USART_PutMsgAndVal('count',count/2,1);
vTaskDelay(4000/portTICK_RATE_MS); } }interrupt task (myint_task) is not running when vSDTASK is running . what would be the problem please help me.
thanks and regard ajith.