软件为keil5,头文件未找到
通过FATFS文件系统读写SD卡创建文件可以了,但加入MSC,一直显示一个没有格式化的U盘盘符,也不能格式化,这是什么问题导致的
STM32双核H7核间通信的方法
STM32F103C8T6使用CubeIDE烧录运行报硬件错误,相同代码MDK烧录却可以正常运行
MCSDK5.4.4 FOC电流闭环运行电机偶发停转问题
MCSDK6.3.1使用SIXSTEP如何才能使用电流模式呢?我在配置了电流传感器后仍然无法使用电流模式。
DMA发送函数只能被调用一次
关于STM32F4的ADC测量不准确
STM32G473VET6同时使用6个片上放大器(OPAMP)的PGA加外部偏置模式,引脚位置让差分信号走线分离,信号有无较大影响?
STM32CubeMX 使用"FW_F1 V1.8.6"生成FreeRTOS代码缺少"freertos_mpool.h"?
STM32Cube_FW_L1_V1.8.1\Projects\STM32L152RE-Nucleo\Examples\ADC\ADC_Sequencer\
不知你说DMA判断是什么?
如果ADC触发了DMA,DMA完成传输后可以触发传输完成中断,然后可以在相应
的回调函数里设置你需要的标志位或做信号量释放。
对,就是想这样,但是好像就是不成功。
为啥我登录后显示 This software is not available for download.?
还有请教下,STM32CubeL1和Stm32CubeMX 是啥关系,互相并列,还是一个包含另一个?
先谢谢各位前辈的时间
你好,谢谢你的回复
请问 STM32Cube_FW_L1_V1.8.1 这个是在哪里有?我在st.com上搜索了一下没结果。
这里有最新版的。
建议你还是系统看看STM32CUBEMX 这个软件,包含了下面这个响应的库。 网上有很多资料。
STM32CubeL1 - STM32Cube MCU Package for STM32L1 series (HAL, Low-Layer APIs and CMSIS, USB, File system, RTOS, Touch Sensing, Graphic - and examples running on ST boards) - STMicroelectronics
链接打开后就是这样的
算了,我在研究研究mx吧
哦我知道了,这个库是mx里面下载的,我早就有了,。。。我看看sample都在哪个位置
我写了 HAL_ADC_ConvCpltCallback 函数
里面置了标志位
然后主循环里面进行了标志位的判断
你好,这里是我的main.c文件中我增加/修改的部分(其他都是CubeMX生成的):
unsigned char flagAdcDMADone;
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
/ Prevent unused argument(s) compilation warning / UNUSED(hadc);
flagAdcDMADone++; }
int main(void) {
/ USER CODE BEGIN 1 /
/ USER CODE END 1 /
/ MCU Configuration--------------------------------------------------------/
/ Reset of all peripherals, Initializes the Flash interface and the Systick. / HAL_Init();
/ USER CODE BEGIN Init /
/ USER CODE END Init /
/ Configure the system clock / SystemClock_Config();
/ USER CODE BEGIN SysInit /
/ USER CODE END SysInit /
/ Initialize all configured peripherals / MX_GPIO_Init(); MX_DMA_Init(); MX_ADC_Init(); / USER CODE BEGIN 2 / flagAdcDMADone=0;
/ USER CODE END 2 /
/ Infinite loop / / USER CODE BEGIN WHILE / while (1) { HAL_ADC_Start_DMA(&hadc,ADC_Resulte,ADCBUFLENG-1); HAL_ADC_Start(&hadc) ; //备注 无论本行注释与否,都无法获得flagAdcDMADone非零值 while(flagAdcDMADone==0) { HAL_Delay(1); }
delay(1000); / USER CODE END WHILE /
/ USER CODE BEGIN 3 / } / USER CODE END 3 / }
[md]研究来研究去
发现这样可以完成:
.....前部初始化代码略
while (1) { HAL_ADC_Start_DMA(&hadc,ADC_Resulte,5);
HAL_ADC_Start(&hadc) ;
while(flagAdcDMADone==0) //flagAdcDMADone在HAL_ADC_ConvCpltCallback中置1
{ HAL_Delay(1);
}
//进过中断了,看下结果数组 //然后delay个长时间
flagAdcDMADone=0;
HAL_ADC_Stop_DMA(&hadc);
HAL_Delay(1000);
/ USER CODE END WHILE /
/ USER CODE BEGIN 3 / }
后续代码略
和库代码里面写得不一样啊:(以下部分节选自STM32L1XX_HAL_ADC.c,第185行起)
(++) ADC conversion with transfer by DMA:
(+++) Activate the ADC peripheral and start conversions using function HAL_ADC_Start_DMA()
(+++) Wait for ADC conversion completion by call of function HAL_ADC_ConvCpltCallback() or HAL_ADC_ConvHalfCpltCallback() (these functions must be implemented in user program)
(+++) Conversion results are automatically transferred by DMA into destination variable address.
(+++) Stop conversion and disable the ADC peripheral using function HAL_ADC_Stop_DMA()
[md]stm32cubemx是个针对stm32全系列的图形化配置工具,可以基于它做芯片的初始并创建基于不同IDE的工程。至于STM32CubeL1是针对STM32L1的外设驱动库 。 多操作几次慢慢就熟了。