本帖最后由 sunlite 于 2015-1-29 18:26 编辑
代码直接用CubeMX生成的,
ADC1_Channel1 的5通道采样, DMA传输,在main的主循环里用HAL_ADC_Start_DMA() 开始ADC采样。
main.c:
- while (1) {
- DMATC = 0; //在DMA1_Channel1_IRQHandler会把这个值更新为1
- HAL_ADC_Start_DMA(&hadc1, (uint32_t *) adcValues, 5);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
- while(DMATC == 0) //这里如果用while去等待DMATC更新为1,则DMA1_Channel1_IRQHandler 永远不会被执行
- // 用示波器看PB14脚永远是高电平的,
- // 如果去掉这段while等待,那么DMA1_Channel1_IRQHandler就会被执行,DMATC也会被更新为1,
- {
- ;
- }
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
- }
复制代码 stm32f1xx_it.c:
- /**
- * @brief This function handles DMA1 channel1 global interrupt.
- */
- void DMA1_Channel1_IRQHandler(void)
- {
- /* USER CODE BEGIN DMA1_Channel1_IRQn 0 */
- /* USER CODE END DMA1_Channel1_IRQn 0 */
- HAL_DMA_IRQHandler(&hdma_adc1);
- /* USER CODE BEGIN DMA1_Channel1_IRQn 1 */
- DMATC = 1; //
- /* USER CODE END DMA1_Channel1_IRQn 1 */
- }
复制代码 项目文件打包,用的是TrueStudio lite. 不知道这到底是什么问题,俺刚刚开始折腾stm32, 摸cube之前只碰过一周的StdPeriphral库,也许犯了初学者常见的问题,还望各位不吝赐教。
多谢
|
不需要自己找下载地址,直接用cubeMX去更新就行了
更新不动呀,很慢,你把你的压缩包给一个好不?