static int __init lpc32xx_dma_init(void) { int ret; ret = request_irq(IRQ_LPC32XX_DMA, dma_irq_handler, 0, "DMA", NULL); if (ret) { printk(KERN_CRIT "Wow! Can't register IRQ for DMA\n"); goto out; } /* Get DMA clock */ dma_ctrl.clk = clk_get(NULL, "clk_dmac"); if (IS_ERR(dma_ctrl.clk)) { ret = -ENODEV; goto errout; } clk_enable(dma_ctrl.clk); /* Clear DMA controller */ __raw_writel(1, DMA_CONFIG(DMAIOBASE)); __raw_writel(0xFF, DMA_INT_TC_CLEAR(DMAIOBASE)); __raw_writel(0xFF, DMA_INT_ERR_CLEAR(DMAIOBASE)); /* Clock is only enabled when needed to save power */ clk_disable(dma_ctrl.clk); return 0; errout: free_irq(IRQ_LPC32XX_DMA, NULL); out: return ret; }
static void dma_clocks_down(void) { dma_ctrl.num_clks--; /* Disable DMA clock if needed */ if (dma_ctrl.num_clks == 0) { __raw_writel(0, DMA_CONFIG(DMAIOBASE)); clk_disable(dma_ctrl.clk); } }
static void dma_clocks_up(void) { /* Enable DMA clock if needed */ if (dma_ctrl.num_clks == 0) { clk_enable(dma_ctrl.clk); __raw_writel(DMAC_CTRL_ENABLE, DMA_CONFIG(DMAIOBASE)); } dma_ctrl.num_clks++; }
int main(void) { u8 loop = 1; char string[256]; //char string1[256]; uint16_t value; uint16_t sizestring; int icase = 0; initPA15(); init_USART1(BT_BAUD); systick_init(); led_Init(); button_init(); UART2_CONFIG(9600);// DMA_CONFIG(); setPA15On(); togglePA15(); while(loop){ //Send data through the bluetooth communication if (GPIOA->IDR & 0x0001) { if (CheckTick(delay_1,500)) { delay_1 = GetTickCount(); USART_puts(USART1, "troi oi 1 2 3 4 5 6 7 8 9 10\n"); led12(); } } if (CheckTick(delay_2,1000)) { delay_2 = GetTickCount(); //led13(); } if (CheckTick(delay_3,5000)) { delay_3 = GetTickCount(); led14(); } if (CheckTick(delay_4,100)) { delay_4 = GetTickCount(); while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET); //while(DMA_GetFlagStatus(DMA1_Stream2,DMA_FLAG_TCIF1) == RESET); value = USART_ReceiveData(USART1); memset(string,0,sizeof(string[0])*256); // Clear all to 0 so string properly represented sprintf(string,"%c",value); //sizestring = sizeof(string); //sprintf(string1,"%c",sizestring); if (string != NULL) { //USART_puts(USART1,string); if (string != NULL) icase = 1; else if (memchr(string, '2', sizeof(string))) icase = 2; else if (memchr(string, '3', sizeof(string))) icase = 3; else if (memchr(string, '4', sizeof(string))) icase = 4; else if (memchr(string, '5', sizeof(string))) icase = 5; //else icase = 6; switch (icase) { case 1: { USART_puts(USART1,string); icase = 0; led15(); } break; case 2: { USART_puts(USART1,"di xuong"); icase = 0; //led14(); } break; case 3: { USART_puts(USART1,"sang trai"); icase = 0; //led13(); } break; case 4: { USART_puts(USART1,"sang phai"); icase = 0; } break; case 5: { USART_puts(USART1,"can bang"); icase = 0; } break; // case 6: // { // //USART_puts(USART1,string); // icase = 0; // } // break; default: break; } //usart_send_string(string); //USART_SendData(USART1,value); } else { //usart_send_string(string); } led15(); } if (CheckTick(delay_5,250)) { delay_5 = GetTickCount(); } /* Disable the UART connection */ //USART_Cmd(USART1, DISABLE); } }