这篇教程C++ DMA_ClearFlag函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中DMA_ClearFlag函数的典型用法代码示例。如果您正苦于以下问题:C++ DMA_ClearFlag函数的具体用法?C++ DMA_ClearFlag怎么用?C++ DMA_ClearFlag使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了DMA_ClearFlag函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: DMA1_Channel1_IRQHandlervoid DMA1_Channel1_IRQHandler(void) { uint8_t ii; /* Test DMA1 TC flag */ if((DMA_GetFlagStatus(DMA1_FLAG_TC1)) != RESET ) { /* Clear DMA TC flag */ DMA_ClearFlag(DMA1_FLAG_TC1); if(Motor_State==INIT) { ADCTemp_Init(ADC_Tab); } else { //LED_ON(); if(FOC_Flag) { for(ii=0;ii<6;ii++) TPWM_Cnt[ii+1]++; PWM_Cnt++; if(Limit_angle<(ANGLE_60D+ANGLE_60D/8)) { SVM_Angle=SVM_Angle+Delta_angle; Limit_angle+=Delta_angle; } // SVM_Angle_Test=0;// IQ_Reference=0;// ID_Reference=1000;// Test_Hall=HALL_DATA(); SVPWM_2ShuntGetPhaseCurrentValues(&Curr_a_b); Clarke(&Curr_alfa_beta,&Curr_a_b); Park(&Curr_q_d,&Curr_alfa_beta,SVM_Angle); // #ifdef OPEN_I Volt_q_d.qV_Component1=VQ_Reference; #else Volt_q_d.qV_Component1=PID_Regulator(IQ_Reference,Curr_q_d.qI_Component1,&IQ_PID_t); // #endif Volt_q_d.qV_Component2=PID_Regulator(ID_Reference,Curr_q_d.qI_Component2,&ID_PID_t); RevPark_Circle_Limitation(&Volt_q_d); Rev_Park(&Volt_alfa_beta,&Volt_q_d); SVPWM_2ShuntCalcDutyCycles(&Volt_alfa_beta); } else PWM_Cnt=1000; //LED_OFF(); DAC_SetChannel1Data(DAC_Align_12b_R,SVM_Angle/16); } if(++T2ms_Temp>T2MSTEMP) //2ms { T2ms_Temp=0; T2ms_Flag=1; } if(++T100ms_Temp>T100MSTEMP) //100ms { T100ms_Temp=0; T100ms_Flag=1; }else{} }}
开发者ID:Sailorwu,项目名称:HallFocF051Focv7,代码行数:65,
示例2: I2C_Master_BufferWrite/*** @brief Writes buffer of bytes.* @param pBuffer: Buffer of bytes to be sent to the slave.* @param NumByteToWrite: Number of bytes to be sent by the Master.* @param Mode: Polling or DMA or Interrupt having the highest priority in the application.* @param SlaveAddress: The address of the slave to be addressed by the Master.* @retval : None.*/Status I2C_Master_BufferWrite(uint8_t* pBuffer, uint32_t NumByteToWrite, uint8_t SlaveAddress ){ __IO uint32_t temp = 0; __IO uint32_t Timeout = 0; /* Enable Error IT (used in all modes: DMA, Polling and Interrupts */ I2C1->CR2 |= I2C_IT_ERR;#if I2C_METHOD == DMA /* I2C1 Master Transmission using DMA */ { Timeout = 0xFFFF; /* Configure the DMA channel for I2C1 transmission */ I2CDMA_Set (pBuffer,NumByteToWrite, I2C_DIRECTION_TX); /* Enable the I2C1 DMA requests */ I2C1->CR2 |= CR2_DMAEN_Set; /* Send START condition */ I2C1->CR1 |= CR1_START_Set; /* Wait until SB flag is set: EV5 */ while ((I2C1->SR1&0x0001) != 0x0001) { if (Timeout-- == 0) return Error; } Timeout = 0xFFFF; /* Send slave address */ /* Reset the address bit0 for write */ SlaveAddress &= OAR1_ADD0_Reset; Address = SlaveAddress; /* Send the slave address */ I2C1->DR = Address; /* Wait until ADDR is set: EV6 */ while ((I2C1->SR1&0x0002) != 0x0002) { if (Timeout-- == 0) return Error; } /* Clear ADDR flag by reading SR2 register */ temp = I2C1->SR2; while (!DMA_GetFlagStatus(DMA1_FLAG_TC6)); DMA_Cmd(DMA1_Channel6, DISABLE); DMA_ClearFlag(DMA1_FLAG_TC6); /* EV8_2: Wait until BTF is set before programming the STOP */ while ((I2C1->SR1 & 0x00004) != 0x000004); /* Program the STOP */ I2C1->CR1 |= CR1_STOP_Set; /* Make sure that the STOP bit is cleared by Hardware */ while ((I2C1->CR1&0x200) == 0x200); }#endif #if I2C_METHOD == POLLING /* I2C1 Master Transmission using Polling */ { Timeout = 0xFFFF; /* Send START condition */ I2C1->CR1 |= CR1_START_Set; /* Wait until SB flag is set: EV5 */ while ((I2C1->SR1&0x0001) != 0x0001) { if (Timeout-- == 0) return Error; } /* Send slave address */ /* Reset the address bit0 for write*/ SlaveAddress &= OAR1_ADD0_Reset; Address = SlaveAddress; /* Send the slave address */ I2C1->DR = Address; Timeout = 0xFFFF; /* Wait until ADDR is set: EV6 */ while ((I2C1->SR1 &0x0002) != 0x0002) { if (Timeout-- == 0) return Error; } /* Clear ADDR flag by reading SR2 register */ temp = I2C1->SR2; /* Write the first data in DR register (EV8_1) */ I2C1->DR = *pBuffer; /* Increment */ pBuffer++; /* Decrement the number of bytes to be written */ NumByteToWrite--; /* While there is data to be written */ while (NumByteToWrite--) {//.........这里部分代码省略.........
开发者ID:003900107,项目名称:wpa900-base,代码行数:101,
示例3: I2C_Master_BufferWrite/** * @brief Writes buffer of bytes. * @param pBuffer: Buffer of bytes to be sent to the slave. * @param NumByteToWrite: Number of bytes to be sent by the Master. * @param Mode: Polling or DMA or Interrupt having the highest priority in the application. * @param SlaveAddress: The address of the slave to be addressed by the Master. * @retval : None. */ErrorStatus I2C_Master_BufferWrite(I2C_TypeDef* I2Cx, uint8_t* pBuffer, uint32_t NumByteToWrite, I2C_ProgrammingModel Mode, uint8_t SlaveAddress, uint32_t timeoutMs){ __IO uint32_t temp = 0; __IO uint32_t Timeout = 0; /* Enable Error IT (used in all modes: DMA, Polling and Interrupts */ I2Cx->CR2 |= I2C_IT_ERR; if (Mode == DMA) /* I2Cx Master Transmission using DMA */ { Timeout = 0xFFFF; /* Configure the DMA channel for I2Cx transmission */ I2C_DMAConfig(I2Cx, pBuffer, NumByteToWrite, I2C_DIRECTION_TX); /* Enable the I2Cx DMA requests */ I2Cx->CR2 |= CR2_DMAEN_Set; /* Send START condition */ I2Cx->CR1 |= CR1_START_Set; /* Wait until SB flag is set: EV5 */ while ((I2Cx->SR1 & 0x0001) != 0x0001) { if (Timeout-- == 0) return ERROR; } Timeout = 0xFFFF; /* Send slave address */ /* Reset the address bit0 for write */ SlaveAddress &= OAR1_ADD0_Reset; Address = SlaveAddress; /* Send the slave address */ I2Cx->DR = Address; /* Wait until ADDR is set: EV6 */ while ((I2Cx->SR1 & 0x0002) != 0x0002) { if (Timeout-- == 0) return ERROR; } /* Clear ADDR flag by reading SR2 register */ temp = I2Cx->SR2; if (I2Cx == I2C1) { /* Wait until DMA end of transfer */// while (!DMA_GetFlagStatus(DMA1_FLAG_TC6)); xSemaphoreTake(i2cdevDmaEventI2c1, M2T(5)); /* Disable the DMA1 Channel 6 */ DMA_Cmd(I2C1_DMA_CHANNEL_TX, DISABLE); /* Clear the DMA Transfer complete flag */ DMA_ClearFlag(DMA1_FLAG_TC6); } else /* I2Cx = I2C2 */ { /* Wait until DMA end of transfer */ //while (!DMA_GetFlagStatus(DMA1_FLAG_TC4)) xSemaphoreTake(i2cdevDmaEventI2c2, M2T(5)); /* Disable the DMA1 Channel 4 */ DMA_Cmd(I2C2_DMA_CHANNEL_TX, DISABLE); /* Clear the DMA Transfer complete flag */ DMA_ClearFlag(DMA1_FLAG_TC4); } /* EV8_2: Wait until BTF is set before programming the STOP */ while ((I2Cx->SR1 & 0x00004) != 0x000004) ; /* Program the STOP */ I2Cx->CR1 |= CR1_STOP_Set; /* Make sure that the STOP bit is cleared by Hardware */ while ((I2Cx->CR1 & 0x200) == 0x200) ; } /* I2Cx Master Transmission using Interrupt with highest priority in the application */ else { /* Enable EVT IT*/ I2Cx->CR2 |= I2C_IT_EVT; /* Enable BUF IT */ I2Cx->CR2 |= I2C_IT_BUF; /* Set the I2C direction to Transmission */ I2CDirection = I2C_DIRECTION_TX; Buffer_Tx1 = pBuffer; SlaveAddress &= OAR1_ADD0_Reset; Address = SlaveAddress; if (I2Cx == I2C1) NumbOfBytes1 = NumByteToWrite; else NumbOfBytes2 = NumByteToWrite; /* Send START condition */ I2Cx->CR1 |= CR1_START_Set; Timeout = timeoutMs * I2CDEV_LOOPS_PER_MS; /* Wait until the START condition is generated on the bus: the START bit is cleared by hardware */ while ((I2Cx->CR1 & 0x100) == 0x100 && Timeout)//.........这里部分代码省略.........
开发者ID:cross-sky,项目名称:4axis,代码行数:101,
示例4: COMInitvoid COMInit(COM_TypeDef COM){ DMA_InitTypeDef DMA_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; USART_InitTypeDef USART_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIO clock */ RCC_AHB1PeriphClockCmd(COM_TX_PORT_CLK[COM] | COM_RX_PORT_CLK[COM] | RCC_AHB1Periph_GPIOD, ENABLE); if (COM == USART_COM1) { /* Enable UART clock */ RCC_APB2PeriphClockCmd(COM_USART_CLK[COM], ENABLE); } /* Connect PXx to USARTx_Tx*/ GPIO_PinAFConfig(COM_TX_PORT[COM], COM_TX_PIN_SOURCE[COM], COM_TX_AF[COM]); /* Connect PXx to USARTx_Rx*/ GPIO_PinAFConfig(COM_RX_PORT[COM], COM_RX_PIN_SOURCE[COM], COM_RX_AF[COM]); /* Configure USART Tx as alternate function */ GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = COM_TX_PIN[COM]; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(COM_TX_PORT[COM], &GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Pin = COM_RX_PIN[COM]; GPIO_Init(COM_RX_PORT[COM], &GPIO_InitStructure); /*USART Init code*/ USART_OverSampling8Cmd(COM_USART[COM], ENABLE); USART_InitStructure.USART_BaudRate = 115200; USART_InitStructure.USART_WordLength = USART_WordLength_8b; 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(COM_USART[COM], &USART_InitStructure); /*USART Interrupt code*/ /*USART TX interrupt*/ NVIC_InitStructure.NVIC_IRQChannel = COM_DMA_TX_IRQn[COM]; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = COM_TX_DMA_PREPRIO[COM]; NVIC_InitStructure.NVIC_IRQChannelSubPriority = COM_TX_DMA_SUBPRIO[COM]; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /*USART RX interrupt*/ NVIC_InitStructure.NVIC_IRQChannel = COM_DMA_RX_IRQn[COM]; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = COM_RX_DMA_PREPRIO[COM]; NVIC_InitStructure.NVIC_IRQChannelSubPriority = COM_RX_DMA_SUBPRIO[COM]; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); RCC_AHB1PeriphClockCmd(COM_DMA_CLK[COM], ENABLE); /*USART TX clean up*/ DMA_ClearFlag(COM_TX_DMA_STREAM[COM], COM_TX_DMA_FLAG_FEIF[COM] | COM_TX_DMA_FLAG_DMEIF[COM] | COM_TX_DMA_FLAG_TEIF[COM] | COM_TX_DMA_FLAG_HTIF[COM] | COM_TX_DMA_FLAG_TCIF[COM]); DMA_Cmd(COM_TX_DMA_STREAM[COM], DISABLE); DMA_DeInit(COM_TX_DMA_STREAM[COM]); /*USART RX Clean up*/ DMA_ClearFlag(COM_RX_DMA_STREAM[COM], COM_RX_DMA_FLAG_FEIF[COM] | COM_RX_DMA_FLAG_DMEIF[COM] | COM_RX_DMA_FLAG_TEIF[COM] | COM_RX_DMA_FLAG_HTIF[COM] | COM_RX_DMA_FLAG_TCIF[COM]); DMA_Cmd(COM_RX_DMA_STREAM[COM], DISABLE); DMA_DeInit(COM_RX_DMA_STREAM[COM]); /*USART TX Config*/ DMA_InitStructure.DMA_Channel = COM_TX_DMA_CHANNEL[COM]; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t) COM_DR_ADDRESS[COM]; DMA_InitStructure.DMA_Memory0BaseAddr = COM_TX_BUFFER[COM]; /* This parameter will be configured durig communication */ DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; /* This parameter will be configured durig communication */ DMA_InitStructure.DMA_BufferSize = 0xFF; /* This parameter will be configured durig communication */ DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte; DMA_InitStructure.DMA_Mode = DMA_Mode_Normal; DMA_InitStructure.DMA_Priority = DMA_Priority_High; DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable; DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; DMA_Init(COM_TX_DMA_STREAM[COM], &DMA_InitStructure); //DMA_ITConfig(COM_TX_DMA_STREAM[COM], DMA_IT_TC, ENABLE); /*USART RX Config*/ DMA_InitStructure.DMA_Channel = COM_RX_DMA_CHANNEL[COM]; DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t) COM_DR_ADDRESS[COM]; DMA_InitStructure.DMA_Memory0BaseAddr = COM_RX_BUFFER[COM]; /* This parameter will be configured durig communication *///.........这里部分代码省略.........
开发者ID:imawolfking,项目名称:narwhalroboticsquad,代码行数:101,
示例5: analogRead/* * @brief Read the analog value of a pin. * Should return a 16-bit value, 0-65536 (0 = LOW, 65536 = HIGH) * Note: ADC is 12-bit. Currently it returns 0-4096 */int32_t analogRead(uint16_t pin){ // Allow people to use 0-7 to define analog pins by checking to see if the values are too low. if (pin < FIRST_ANALOG_PIN) { pin = pin + FIRST_ANALOG_PIN; } // SPI safety check if (SPI.isEnabled() == true && (pin == SCK || pin == MOSI || pin == MISO)) { return LOW; } // I2C safety check if (Wire.isEnabled() == true && (pin == SCL || pin == SDA)) { return LOW; } // Serial1 safety check if (Serial1.isEnabled() == true && (pin == RX || pin == TX)) { return LOW; } if (pin >= TOTAL_PINS || PIN_MAP[pin].adc_channel == NONE ) { return LOW; } int i = 0; if (adcChannelConfigured != PIN_MAP[pin].adc_channel) { digitalPinModeSaved = PIN_MAP[pin].pin_mode; pinMode(pin, AN_INPUT); } if (adcInitFirstTime == true) { ADC_DMA_Init(); adcInitFirstTime = false; } if (adcChannelConfigured != PIN_MAP[pin].adc_channel) { // ADC1 regular channel configuration ADC_RegularChannelConfig(ADC1, PIN_MAP[pin].adc_channel, 1, ADC_Sample_Time); // ADC2 regular channel configuration ADC_RegularChannelConfig(ADC2, PIN_MAP[pin].adc_channel, 1, ADC_Sample_Time); // Save the ADC configured channel adcChannelConfigured = PIN_MAP[pin].adc_channel; } for(i = 0 ; i < ADC_DMA_BUFFERSIZE ; i++) { ADC_DualConvertedValues[i] = 0; } // Reset the number of data units in the DMA1 Channel1 transfer DMA_SetCurrDataCounter(DMA1_Channel1, ADC_DMA_BUFFERSIZE); // Enable ADC2 external trigger conversion ADC_ExternalTrigConvCmd(ADC2, ENABLE); // Enable DMA1 Channel1 DMA_Cmd(DMA1_Channel1, ENABLE); // Enable ADC1 DMA ADC_DMACmd(ADC1, ENABLE); // Start ADC1 Software Conversion ADC_SoftwareStartConvCmd(ADC1, ENABLE); // Test on Channel 1 DMA1_FLAG_TC flag while(!DMA_GetFlagStatus(DMA1_FLAG_TC1)); // Clear Channel 1 DMA1_FLAG_TC flag DMA_ClearFlag(DMA1_FLAG_TC1); // Disable ADC1 DMA ADC_DMACmd(ADC1, DISABLE); // Disable DMA1 Channel1 DMA_Cmd(DMA1_Channel1, DISABLE); uint16_t ADC1_ConvertedValue = 0; uint16_t ADC2_ConvertedValue = 0; uint32_t ADC_SummatedValue = 0; uint16_t ADC_AveragedValue = 0; for(int i = 0 ; i < ADC_DMA_BUFFERSIZE ; i++) { // Retrieve the ADC2 converted value and add to ADC_SummatedValue//.........这里部分代码省略.........
开发者ID:kevinkessler,项目名称:core-firmware,代码行数:101,
示例6: SPI_DMA_Transmit8/* Envía y recibe datos de 8 bits (SPI-DMA) */uint8_t SPI_DMA_Transmit8(SPI_TypeDef* SPIx, const uint8_t* pTData, uint8_t* pRData, uint16_t pSize){ uint32_t Dummy = 0xFF; /* Establece el tama C++ DMA_Cmd函数代码示例 C++ DMA_CCR函数代码示例
|