static void AppTask_2 (void *p_arg) { INT8U err; (void)p_arg; APP_TRACE_INFO(("AppTask_2\n\r")); pSecureEventFlagGrp = OSFlagCreate(0x0, &err); /* Enable Crypto clock */ CLK->AHBCLK |= CLK_AHBCLK_CRPTCKEN_Msk; BSP_IntVectSet(BSP_INT_ID_CRYPTO, CRYPTO_IRQHandler); BSP_IntEn(BSP_INT_ID_CRYPTO); PRNG_ENABLE_INT(); while (1) { PRNG_Open(PRNG_KEY_SIZE_256, 0, 0); bsp_printf("Start PRNG...\n"); PRNG_Start(); OSFlagPend(pSecureEventFlagGrp, 0x1, OS_FLAG_WAIT_SET_ANY, 0, &err); dump_PRNG(); OSTimeDlyHMSM(0, 0, 0, 100); } }
static void BSP_TSI_Init (void) { BSP_TSI_Slider.EndFlg = DEF_FALSE; /* Initialize global variables. */ BSP_TSI_Slider.Electrodes[0].PinNbr = BSP_TSI_PIN9; BSP_TSI_Slider.Electrodes[1].PinNbr = BSP_TSI_PIN10; BSP_TSI_Slider.Electrodes[0].Threshold = BSP_TSI_THRESHOLD; BSP_TSI_Slider.Electrodes[1].Threshold = BSP_TSI_THRESHOLD; SIM_SCGC5 |= SIM_SCGC5_TSI_MASK; /* Enable clock gating for TSI. */ /* Enable proper GPIO as TSI channels. */ PORTB_PCR16 = PORT_PCR_MUX(0); /* PTB16 as TSI channel 9. */ PORTB_PCR17 = PORT_PCR_MUX(0); /* PTB17 as TSI channel 10. */ BSP_IntVectSet(BSP_INT_ID_TSI0, BSP_TSI_IntHandler); /* Register the interrupt handler. */ BSP_IntEn(BSP_INT_ID_TSI0); /* Enable the TSI module interrupts. */ TSI0_GENCS |= (TSI_GENCS_ESOR_MASK | TSI_GENCS_MODE(0) | TSI_GENCS_REFCHRG(4) | TSI_GENCS_DVOLT(0) | TSI_GENCS_EXTCHRG(7) | TSI_GENCS_PS(4) | TSI_GENCS_NSCN(11) | TSI_GENCS_TSIIEN_MASK | TSI_GENCS_STPE_MASK); TSI0_GENCS |= TSI_GENCS_TSIEN_MASK; /* Enable the TSI module. */ BSP_TSI_SelfCal(); /* Self calibration. */ }
/** * In this function, the hardware should be initialized. * Called from ethernetif_init(). * * @param netif the already initialized lwip network interface structure * for this ethernetif */ static void low_level_init(struct netif *netif) { SYS_ARCH_DECL_PROTECT(sr); /* set MAC hardware address length */ netif->hwaddr_len = ETHARP_HWADDR_LEN; /* set MAC hardware address */ netif->hwaddr[0] = MACaddr[0]; netif->hwaddr[1] = MACaddr[1]; netif->hwaddr[2] = MACaddr[2]; netif->hwaddr[3] = MACaddr[3]; netif->hwaddr[4] = MACaddr[4]; netif->hwaddr[5] = MACaddr[5]; /* maximum transfer unit */ netif->mtu = 1500; /* device capabilities */ /* don't set NETIF_FLAG_ETHARP if this device is not an ethernet one */ netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP; SYS_ARCH_PROTECT(sr); /* Initialize Tx Descriptors list: Chain Mode */ ETH_DMATxDescChainInit(DMATxDscrTab, &Tx_Buff[0][0], ETH_TXBUFNB); /* Initialize Rx Descriptors list: Chain Mode */ ETH_DMARxDescChainInit(DMARxDscrTab, &Rx_Buff[0][0], ETH_RXBUFNB); /*----------added by Wang Mengyin 2010-07-20----------------------------------*/ // install Ethernet Interrupt Handlers // enable Ethernet Interrupt in NVIC and set up ISR BSP_IntVectSet(BSP_INT_ID_ETH, LwIP_Pkt_Handle); BSP_IntEn(BSP_INT_ID_ETH); /* Enable Ethernet Rx interrrupt */ { int i; for(i=0; i<ETH_RXBUFNB; i++) { ETH_DMARxDescReceiveITConfig(&DMARxDscrTab[i], ENABLE); } } #ifdef CHECKSUM_BY_HARDWARE /* Enable the checksum insertion for the Tx frames */ { int i; for(i=0; i<ETH_TXBUFNB; i++) { ETH_DMATxDescChecksumInsertionConfig(&DMATxDscrTab[i], ETH_DMATxDesc_ChecksumTCPUDPICMPFull); } } #endif SYS_ARCH_UNPROTECT(sr); /* Enable MAC and DMA transmission and reception */ ETH_Start(); }
void BSP_Ser_Init (CPU_INT32U baud_rate) { GPIO_InitTypeDef gpio_init; USART_InitTypeDef usart_init; USART_ClockInitTypeDef usart_clk_init; /* ------------------ INIT OS OBJECTS ----------------- */ BSP_OS_SemCreate(&BSP_SerTxWait, BSP_UART2_TX_BUFFER_SIZE, "Serial Tx Wait"); BSP_OS_SemCreate(&BSP_SerRxWait, 0, "Serial Rx Wait"); BSP_OS_SemCreate(&BSP_SerLock, 1, "Serial Lock"); /* ----------------- INIT USART STRUCT ---------------- */ usart_init.USART_BaudRate = baud_rate; usart_init.USART_WordLength = USART_WordLength_8b; usart_init.USART_StopBits = USART_StopBits_1; usart_init.USART_Parity = USART_Parity_No ; usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usart_init.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; usart_clk_init.USART_Clock = USART_Clock_Disable; usart_clk_init.USART_CPOL = USART_CPOL_Low; usart_clk_init.USART_CPHA = USART_CPHA_2Edge; usart_clk_init.USART_LastBit = USART_LastBit_Disable; BSP_PeriphEn(BSP_PERIPH_ID_USART2); BSP_PeriphEn(BSP_PERIPH_ID_IOPD); BSP_PeriphEn(BSP_PERIPH_ID_AFIO); GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); /* ----------------- SETUP USART2 GPIO ---------------- */ /* Configure GPIOD.5 as push-pull. */ gpio_init.GPIO_Pin = GPIO_Pin_5; gpio_init.GPIO_Speed = GPIO_Speed_50MHz; gpio_init.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, &gpio_init); /* Configure GPIOD.6 as input floating. */ gpio_init.GPIO_Pin = GPIO_Pin_6; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &gpio_init); /* ------------- CLEAN UP RX & TX BUFFERS ------------- */ Mem_Clr((void*)&BSP_SerialRxBuffer[0], BSP_UART2_RX_BUFFER_SIZE); Mem_Clr((void*)&BSP_SerialTxBuffer[0], BSP_UART2_TX_BUFFER_SIZE); BSP_TxBuffer_Head_ndx = 0; BSP_TxBuffer_Tail_ndx = 0; BSP_RxBuffer_Head_ndx = 0; BSP_RxBuffer_Tail_ndx = 0; /* ------------------ SETUP USART2 -------------------- */ USART_Init(USART2, &usart_init); USART_ClockInit(USART2, &usart_clk_init); USART_Cmd(USART2, ENABLE); BSP_IntVectSet(BSP_INT_ID_USART2, BSP_Ser_ISR_Handler); BSP_IntEn(BSP_INT_ID_USART2); BSP_SerialInitilizated = DEF_TRUE; }
/* ********************************************************************************************************* * InitADCPort ********************************************************************************************************* * Arguments: * none. * * Note(s) : (1) The ADC clock configuration is done in BSP_Init(). The peripheral clock frecuency * is set to 12 MHz. * (2) Vref+ = 3V3 * Vref- = GND * ********************************************************************************************************* */ static void InitADCPort() { RCC->APB2ENR |= 0x08 | 1<<9; /* Enable ADC1 & PORTB peripheral clock */ GPIOB->CRL &= ~0x00ff; /* Configure PB0 and PB1 as analog inputs */ /* Config: 00 (analog input) */ /* Mode: 00 (input mode) */ ADC1->CR1 = 0x00000180; /* DAC1 Control Register 1 */ /* - No Analog Watchdog */ /* - Independent mode */ /* - Discontinuous mode: 1 channels */ /* - Discontinous mode on regular channels: DISABLED */ /* - Discontinous mode on injected channels: DISABLED */ /* - Scan mode: ENABLED */ /* - End of converstion interrupt: ENABLED */ ADC1->CR2 = 0x0000F001; /* DAC1 Control Register 2 */ /* - Temperature sensor: DISABLED */ /* - Trigger for injected channles: JSWSTART (software) */ /* - Data alignment: RIGHT */ /* - DMA: DISABLED */ /* - Single conversion mode */ /* - A/D converter ON (ADON = 1) */ ADC1->SMPR1 = 0x00000000; /* ADC1 sample time register 1 */ /* - All channels to 1.5 cycles (1.17 us / conversion) */ ADC1->SMPR2 = 0x00000000; /* ADC1 sample time register 2 */ /* - All channels to 1.5 cycles (1.17 us / conversion) */ ADC1->JOFR1 = 0x00000000; /* ADC1 injected channel data offset register 1 */ ADC1->JOFR2 = 0x00000000; /* ADC1 injected channel data offset register 2 */ ADC1->JOFR3 = 0x00000000; /* ADC1 injected channel data offset register 3 */ ADC1->JOFR4 = 0x00000000; /* ADC1 injected channel data offset register 4 */ /* - All channels to 1.5 cycles (1.17 us / conversion) */ ADC1->JSQR = 0x0014A000; /* ADC1 injected channels sequence register */ /* - 2 channels */ /* - JSQ4 = channel 9 */ /* - JSQ3 = channel 8 */ ADC1->CR2 |= 0x08; /* Reset ADC1 calibration */ while (ADC1->CR2 & 0x08); /* Wait until reset calibration is completed */ ADC1->CR2 |= 0x04; /* Activate ADC1 calibration */ while (ADC1->CR2 & 0x04); /* Wait until calibration is completed */ BSP_IntVectSet((CPU_INT08U )BSP_INT_ID_ADC1_2, /* Set the ADC Interrupt vector */ (CPU_FNCT_VOID)ADC1_ISR_Handler); BSP_IntEn(BSP_INT_ID_ADC1_2); /* Enable the ADC global interrupt */ }
void TERM_TASK_button(void *p_arg) { OS_ERR err; CPU_TS ts; //init button GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; BSP_PeriphEn(BSP_PERIPH_ID_IOPA); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0; 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_EXTI0, ButtonISRHandler); BSP_IntEn(BSP_INT_ID_EXTI0); OSSemCreate(&SEM_buttonISR, "button isr", 0, &err); while (DEF_TRUE) { OSSemPend(&SEM_buttonISR, 0, OS_OPT_PEND_BLOCKING, &ts, &err); OSSemPend(&SEM_bias_y, 0, OS_OPT_PEND_NON_BLOCKING, &ts, &err); switch(err){ case OS_ERR_NONE: bias_y += 100; OSSemPost(&SEM_bias_y, OS_OPT_POST_1, &err); break; } } }
static void AppTaskRadioControlInit(void) { GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_USART6); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_USART6); USART_InitStructure.USART_BaudRate = 125000; USART_InitStructure.USART_WordLength = USART_WordLength_9b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART6, &USART_InitStructure); USART_WakeUpConfig(USART6, USART_WakeUp_AddressMark); USART_SetAddress(USART6, 0x05); USART_ITConfig(USART6, USART_IT_RXNE, ENABLE); USART_ITConfig(USART6, USART_IT_TC, ENABLE); USART_ClearFlag(USART6,USART_FLAG_RXNE); USART_ClearFlag(USART6,USART_FLAG_TC); BSP_IntVectSet(BSP_INT_ID_USART6, USART6_IRQHandler); BSP_IntPrioSet(BSP_INT_ID_USART6, 3); BSP_IntEn(BSP_INT_ID_USART6); USART_Cmd(USART6, ENABLE); }
void AT91_TC_Init( CPU_INT08U timer_index, CPU_INT08U timer_div, void (*handler)( void ), CPU_INT32U delay_us ) { CPU_INT16U DIV[5] = { 2,//1 us ~ 2730 us 8, 32, 128, 1024 // 22us - 1.4s maxium }; CPU_INT32U counter_top = MCK / (1000*1000) * delay_us / ( DIV[timer_div] ) ; if( counter_top & 0xFFFF0000 ) { counter_top = 0xFFFF; // if exceeds TC_RC ... } AT91C_BASE_PMC->PMC_PCER = (1 << ppcer_offset[timer_index]); pTCREG[timer_index]->TC_CCR = AT91C_TC_CLKDIS; pTCREG[timer_index]->TC_IDR = 0xFFFFFFFF; pTCREG[timer_index]->TC_CMR = timer_div | AT91C_TC_CPCSTOP | AT91C_TC_CPCDIS | AT91C_TC_WAVESEL_UP_AUTO | AT91C_TC_WAVE; pTCREG[timer_index]->TC_RC = (CPU_INT16U) counter_top ; if( handler != NULL ) { pTCREG[timer_index]->TC_IER = AT91C_TC_CPCS | AT91C_TC_COVFS; BSP_IntVectSet( ppcer_offset[timer_index], (CPU_INT08U )AT91C_AIC_PRIOR_HIGHEST, (CPU_INT08U )BSP_INT_SCR_TYPE_INT_HIGH_LEVEL_SENSITIVE, (CPU_FNCT_VOID)handler); BSP_IntClr(ppcer_offset[timer_index] ); BSP_IntEn(ppcer_offset[timer_index]); pTCREG[timer_index]->TC_CCR = AT91C_TC_CLKEN + AT91C_TC_SWTRG ; } }
void OSView_InitTarget (INT32U baud_rate) { GPIO_InitTypeDef gpio_init; USART_InitTypeDef usart_init; USART_ClockInitTypeDef usart_clk_init; OSView_TmrInit(); /* Initialize the free running timer */ /* ----------------- INIT USART STRUCT ---------------- */ usart_init.USART_BaudRate = baud_rate; usart_init.USART_WordLength = USART_WordLength_8b; usart_init.USART_StopBits = USART_StopBits_1; usart_init.USART_Parity = USART_Parity_No ; usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usart_init.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; usart_clk_init.USART_Clock = USART_Clock_Disable; usart_clk_init.USART_CPOL = USART_CPOL_Low; usart_clk_init.USART_CPHA = USART_CPHA_2Edge; usart_clk_init.USART_LastBit = USART_LastBit_Disable; #if (OS_VIEW_COMM_SEL == OS_VIEW_UART_1) BSP_PeriphEn(BSP_PERIPH_ID_USART1); /* ----------------- SETUP USART1 GPIO ---------------- */ BSP_PeriphEn(BSP_PERIPH_ID_IOPA); /* Configure GPIOA.9 as push-pull */ gpio_init.GPIO_Pin = GPIO_Pin_9; gpio_init.GPIO_Speed = GPIO_Speed_50MHz; gpio_init.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &gpio_init); /* Configure GPIOA.10 as input floating */ gpio_init.GPIO_Pin = GPIO_Pin_10; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpio_init); /* ------------------ SETUP USART1 -------------------- */ USART_Init(USART1, &usart_init); USART_ClockInit(USART1, &usart_clk_init); USART_Cmd(USART1, ENABLE); BSP_IntVectSet(BSP_INT_ID_USART1, OSView_RxTxISRHandler); BSP_IntEn(BSP_INT_ID_USART1); #endif #if (OS_VIEW_COMM_SEL == OS_VIEW_UART_2) BSP_PeriphEn(BSP_PERIPH_ID_USART2); /* ----------------- SETUP USART2 GPIO ---------------- */ BSP_PeriphEn(BSP_PERIPH_ID_IOPA); /* Configure GPIOA.2 as push-pull */ gpio_init.GPIO_Pin = GPIO_Pin_2; gpio_init.GPIO_Speed = GPIO_Speed_50MHz; gpio_init.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &gpio_init); /* Configure GPIOA.3 as input floating */ gpio_init.GPIO_Pin = GPIO_Pin_3; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &gpio_init); /* ------------------ SETUP USART2 -------------------- */ USART_Init(USART2, &usart_init); USART_ClockInit(USART2, &usart_clk_init); USART_Cmd(USART2, ENABLE); BSP_IntVectSet(BSP_INT_ID_USART2, OSView_RxTxISRHandler); BSP_IntEn(BSP_INT_ID_USART2); #endif #if (OS_VIEW_COMM_SEL == OS_VIEW_UART_3) BSP_PeriphEn(BSP_PERIPH_ID_USART3); /* ----------------- SETUP USART3 GPIO ---------------- */ BSP_PeriphEn(BSP_PERIPH_ID_IOPB); /* Configure GPIOB.10 as push-pull */ gpio_init.GPIO_Pin = GPIO_Pin_10; gpio_init.GPIO_Speed = GPIO_Speed_50MHz; gpio_init.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &gpio_init); /* Configure GPIOB.11 as input floating */ gpio_init.GPIO_Pin = GPIO_Pin_11; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &gpio_init); /* ------------------ SETUP USART3 -------------------- */ USART_Init(USART3, &usart_init); USART_ClockInit(USART3, &usart_clk_init); USART_Cmd(USART3, ENABLE); BSP_IntVectSet(BSP_INT_ID_USART3, OSView_RxTxISRHandler); BSP_IntEn(BSP_INT_ID_USART3); #endif }
void BSP_Ser_Init (CPU_INT32U baud_rate) { FlagStatus tc_status; GPIO_InitTypeDef gpio_init; USART_InitTypeDef usart_init; USART_ClockInitTypeDef usart_clk_init; /* ------------------ INIT OS OBJECTS ----------------- */ BSP_OS_SemCreate(&BSP_SerTxWait, 0, "Serial Tx Wait"); BSP_OS_SemCreate(&BSP_SerRxWait, 0, "Serial Rx Wait"); BSP_OS_SemCreate(&BSP_SerLock, 1, "Serial Lock"); #if (BSP_CFG_SER_CMD_HISTORY_LEN > 0u) BSP_SerCmdHistory[0] = (CPU_CHAR)'\0'; #endif /* ----------------- INIT USART STRUCT ---------------- */ usart_init.USART_BaudRate = baud_rate; usart_init.USART_WordLength = USART_WordLength_8b; usart_init.USART_StopBits = USART_StopBits_1; usart_init.USART_Parity = USART_Parity_No ; usart_init.USART_HardwareFlowControl = USART_HardwareFlowControl_None; usart_init.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; usart_clk_init.USART_Clock = USART_Clock_Disable; usart_clk_init.USART_CPOL = USART_CPOL_Low; usart_clk_init.USART_CPHA = USART_CPHA_2Edge; usart_clk_init.USART_LastBit = USART_LastBit_Disable; BSP_PeriphEn(BSP_PERIPH_ID_USART2); BSP_PeriphEn(BSP_PERIPH_ID_IOPD); BSP_PeriphEn(BSP_PERIPH_ID_AFIO); GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE); /* ----------------- SETUP USART2 GPIO ---------------- */ /* Configure GPIOD.5 as push-pull. */ gpio_init.GPIO_Pin = GPIO_Pin_5; gpio_init.GPIO_Speed = GPIO_Speed_50MHz; gpio_init.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOD, &gpio_init); /* Configure GPIOD.6 as input floating. */ gpio_init.GPIO_Pin = GPIO_Pin_6; gpio_init.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOD, &gpio_init); /* ------------------ SETUP USART2 -------------------- */ USART_Init(USART2, &usart_init); USART_ClockInit(USART2, &usart_clk_init); USART_Cmd(USART2, ENABLE); USART_ITConfig(USART2, USART_IT_TC, DISABLE); USART_ITConfig(USART2, USART_IT_TXE, DISABLE); tc_status = USART_GetFlagStatus(USART2, USART_FLAG_TC); while (tc_status == SET) { USART_ClearITPendingBit(USART2, USART_IT_TC); USART_ClearFlag(USART2, USART_IT_TC); BSP_OS_TimeDlyMs(10); tc_status = USART_GetFlagStatus(USART2, USART_FLAG_TC); } BSP_IntVectSet(BSP_INT_ID_USART2, BSP_Ser_ISR_Handler); BSP_IntEn(BSP_INT_ID_USART2); }