说明:CC3000初始化要等ucosii操作系统跑起来后再执行,否则进不了外部中断函数。
/*
*********************************************************************************************************
*main()
*
* Description : This is the standard entry point for C code.It is assumed that your code will call
*main() once you have performed all necessary initialization.
*
* Argument(s) : none.
*
* Return(s): none.
*********************************************************************************************************
*/
intmain (void)
{
CPU_INT08Uos_err;
BSP_IntDisAll();
/* Disable all ints until we are ready to accept them.*/OSInit();
/* Initialize "uC/OS-II, The Real-Time Kernel".*/os_err = OSTaskCreateExt((void (*)(void *)) App_TaskStart,/* Create the start task.*/
(void* ) 0,
(OS_STK* )&App_TaskStartStk[APP_TASK_START_STK_SIZE - 1],
(INT8U) APP_TASK_START_PRIO,
(INT16U) APP_TASK_START_PRIO,
(OS_STK* )&App_TaskStartStk[0],
(INT32U) APP_TASK_START_STK_SIZE,
(void* )0,
(INT16U)(OS_TASK_OPT_STK_CLR | OS_TASK_OPT_STK_CHK));
#if (OS_TASK_NAME_SIZE >= 11)
OSTaskNameSet(APP_TASK_START_PRIO, (CPU_INT08U *)"Start Task", &os_err);
#endifOSStart();
/* Start multitasking (i.e. give control to uC/OS-II).*/return (0);
}
/*
*********************************************************************************************************
*App_TaskStart()
*
* Description : The startup task.The uC/OS-II ticker should only be initialize once multitasking starts.
*
* Argument(s) : p_argArgument passed to 'App_TaskStart()' by 'OSTaskCreate()'.
*
* Return(s): none.
*
* Caller(s): This is a task.
*
* Note(s): none.
*********************************************************************************************************
*/
staticvoidApp_TaskStart (void *p_arg)
{
(void)p_arg;
BSP_Init();
/* Initialize BSP functions. */
OS_CPU_SysTickInit();
/* Initialize the SysTick. */#if (OS_TASK_STAT_EN > 0)
OSStatInit();
/* Determine CPU capacity. */
#endifwhile (DEF_TRUE) { OSTimeDlyHMSM(0, 0, 0, 1000);
}
}
/*
*********************************************************************************************************
*BSP_Init()
*
* Description : Initialize the Board Support Package (BSP).
*
* Argument(s) : none.
*
* Return(s): none.
*
* Caller(s): Application.
*
* Note(s): (1) This function SHOULD be called before any other BSP function is called.
*********************************************************************************************************
*/voidBSP_Init (void)
{
BSP_SystemInit();
/* Initialize system clock */
delay_init();
#if (APP_DEBUG_EN == DEF_ENABLED)
BSP_USART_Init();
/* Initialize Debug Usart */
#endif#if (APP_KEY_EN == DEF_ENABLED)
Key_Init();
/* Initialize ADCs & DMA for Keys */
#endif#if (APP_WIFI_EN == DEF_ENABLED)
CC3000_WLAN_Setup();
// Initialize Board and CC3000
#endif
}
//CC3000使能外部中断
void WlanInterruptEnable(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
EXTI_InitTypeDef EXTI_InitStructure;
/* CC3000_WIFI_INT_GPIO and AFIO Peripheral clock enable */
RCC_APB2PeriphClockCmd(CC3000_WIFI_INT_GPIO_CLK | RCC_APB2Periph_AFIO, ENABLE);
/* Configure CC3000_WIFI pins: Interrupt */
GPIO_InitStructure.GPIO_Pin = CC3000_WIFI_INT_GPIO_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(CC3000_WIFI_INT_GPIO_PORT, &GPIO_InitStructure);
/* Select the CC3000_WIFI_INT GPIO pin used as EXTI Line */
GPIO_EXTILineConfig(CC3000_WIFI_INT_EXTI_PORT_SOURCE, CC3000_WIFI_INT_EXTI_PIN_SOURCE );
/* Clear the EXTI line pending flag */
EXTI_ClearFlag(CC3000_WIFI_INT_EXTI_LINE );
/* Configure and Enable CC3000_WIFI_INT EXTI line */
EXTI_InitStructure.EXTI_Line = CC3000_WIFI_INT_EXTI_LINE;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
BSP_IntVectSet(BSP_INT_ID_EXTI9_5, EXTI9_5_IRQHandler);
BSP_IntPrioSet(BSP_INT_ID_EXTI9_5, EXTI9_5_IRQ_PRIORITY);
BSP_IntEn(BSP_INT_ID_EXTI9_5);
}
//CC3000 外部中断服务函数
void EXTI9_5_IRQHandler(void)
{
if (EXTI_GetITStatus(CC3000_WIFI_INT_EXTI_LINE) != RESET) //SPI irq
{
SPI_IRQ();
EXTI_ClearITPendingBit(CC3000_WIFI_INT_EXTI_LINE);
}
}
【stm32+CC3000移植到ucosii之外部中断服务函数】
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- STM32|STM32的四种IO输出模式
- STM32 远程升级(ISP / IAP)
- stm32|stm32f103can总线过滤器配置
- STM32CubeMX配置SDIO模式(非DMA方式)
- STM32|如何建一个STM32F030标准库工程模板
- STM32 时钟RCC相关配置参考stm32f10x_rcc.h
- STM32 NVIC