diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/main.c b/Examples/Raw/ADC/ContinuousConversion_DMA/main.c index ffa6755..c4aebee 100755 --- a/Examples/Raw/ADC/ContinuousConversion_DMA/main.c +++ b/Examples/Raw/ADC/ContinuousConversion_DMA/main.c @@ -25,6 +25,7 @@ #include "py32f0xx_bsp_printf.h" /* Private define ------------------------------------------------------------*/ +#define BUF_SIZE 1024 /* Private variables ---------------------------------------------------------*/ /* Private user code ---------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ @@ -38,7 +39,7 @@ ADC_ChannelConfTypeDef sConfig; TIM_HandleTypeDef TimHandle; TIM_OC_InitTypeDef OCConfig; TIM_MasterConfigTypeDef sMasterConfig; -uint32_t gADCxConvertedData = 1; +uint32_t gADCxConvertedData[BUF_SIZE]; /* Private user code ---------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ @@ -57,8 +58,8 @@ int main(void) { if (__HAL_DMA_GET_FLAG(DMA1, DMA_ISR_TCIF1)) { + printf("ADC: %ld %ld %ld\r\n", *gADCxConvertedData, *(gADCxConvertedData + 1), *(gADCxConvertedData + 2)); __HAL_DMA_CLEAR_FLAG(DMA1, DMA_IFCR_CTCIF1); - printf("ADC: %ld \r\n", gADCxConvertedData); } } } @@ -77,7 +78,7 @@ static void APP_AdcConfig(void) AdcHandle.Instance = ADC1; AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1; /* ADC clock */ - AdcHandle.Init.Resolution = ADC_RESOLUTION_12B; /* Resolution can be 6bit, 8bit, 10bit, 12bit */ + AdcHandle.Init.Resolution = ADC_RESOLUTION_12B; /* Valid resolution is around 8 bit */ AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; /* Right alignment */ AdcHandle.Init.ScanConvMode = ADC_SCAN_DIRECTION_BACKWARD; AdcHandle.Init.EOCSelection = ADC_EOC_SINGLE_CONV; @@ -101,7 +102,7 @@ static void APP_AdcConfig(void) APP_ErrorHandler(); } - if (HAL_ADC_Start_DMA(&AdcHandle, &gADCxConvertedData, 1) != HAL_OK) + if (HAL_ADC_Start_DMA(&AdcHandle, gADCxConvertedData, BUF_SIZE) != HAL_OK) { APP_ErrorHandler(); } diff --git a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c index 72b9b29..005b212 100755 --- a/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c +++ b/Examples/Raw/ADC/ContinuousConversion_DMA/py32f0xx_hal_msp.c @@ -29,7 +29,6 @@ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ static DMA_HandleTypeDef HdmaCh1; -extern uint32_t aADCxConvertedData; /* Private function prototypes -----------------------------------------------*/ /* External functions --------------------------------------------------------*/ @@ -56,27 +55,16 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* - * DMA1_MAP: - * 00000:ADC 00001:SPI1_TX 00010:SPI1_RX 00011:Reserved - * 00100:Reserved 00101:USART1_TX 00110:USART1_RX 00111:USART2_TX - * 01000:USART2_RX 01001:I2C_TX 01010:I2C_RX 01011:TIM1_CH1 - * 01100:TIM1_CH2 01101:TIM1_CH3 01110:TIM1_CH4 01111:TIM1_COM - * 10000:TIM1_UP 10001:TIM1_TRIG 10010:TIM3_CH1 10011:TIM3_CH3 - * 10100:TIM3_CH4 10101:TIM3_TRG 10110:TIM3_UP 10111:Reserved - * 11000:TIM16_CH1 11001:TIM16_UP 11010:TIM17_CH1 11011:TIM17_UP - * Others:Reserved - */ - HAL_SYSCFG_DMA_Req(0); /* DMA1_MAP Set to ADC */ + HAL_SYSCFG_DMA_Req(DMA_CHANNEL_MAP_ADC); /* DMA1_MAP Set to ADC */ HdmaCh1.Instance = DMA1_Channel1; HdmaCh1.Init.Direction = DMA_PERIPH_TO_MEMORY; HdmaCh1.Init.PeriphInc = DMA_PINC_DISABLE; - HdmaCh1.Init.MemInc = DMA_MINC_DISABLE; + HdmaCh1.Init.MemInc = DMA_MINC_ENABLE; HdmaCh1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD; - HdmaCh1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD; + HdmaCh1.Init.MemDataAlignment = DMA_MDATAALIGN_WORD; HdmaCh1.Init.Mode = DMA_CIRCULAR; - HdmaCh1.Init.Priority = DMA_PRIORITY_VERY_HIGH; + HdmaCh1.Init.Priority = DMA_PRIORITY_HIGH; HAL_DMA_DeInit(&HdmaCh1); HAL_DMA_Init(&HdmaCh1);