Skip to content

Commit 8816aa3

Browse files
committed
支持SDIO SD,支持FATFS,ADC+多通道扫描+DMA无错
1 parent a25af42 commit 8816aa3

10 files changed

Lines changed: 413 additions & 374 deletions

File tree

STM32F1_HAL_freeRTOS_Framework/SYSTEM/FATFS/diskio.c

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ DSTATUS disk_initialize (
7575
return stat;
7676

7777
case DEV_SD : /*SDIO SD卡初始化*/
78+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
7879
stat = (DSTATUS)SD_Init();
79-
80+
#endif
8081
return stat;
8182

8283
case DEV_USB :
@@ -116,8 +117,9 @@ DRESULT disk_read (
116117
return res;
117118

118119
case DEV_SD : /*SDIO SD卡读*/
120+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
119121
res = (DRESULT)SD_ReadDisk(buff,sector,count);
120-
122+
#endif
121123
return res;
122124

123125
case DEV_USB :
@@ -158,8 +160,9 @@ DRESULT disk_write (
158160
return res;
159161

160162
case DEV_SD : /*SDIO SD卡写*/
163+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
161164
res = (DRESULT)SD_WriteDisk((u8*)buff,sector,count);
162-
165+
#endif
163166
return res;
164167

165168
case DEV_USB :
@@ -206,11 +209,15 @@ DRESULT disk_ioctl (
206209
res = RES_OK;
207210
break;
208211
case GET_BLOCK_SIZE:
212+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
209213
*(WORD*)buff = SDCardInfo.LogBlockSize;
214+
#endif
210215
res = RES_OK;
211216
break;
212217
case GET_SECTOR_COUNT:
218+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
213219
*(DWORD*)buff = SDCardInfo.LogBlockNbr;
220+
#endif
214221
res = RES_OK;
215222
break;
216223
default:

STM32F1_HAL_freeRTOS_Framework/SYSTEM/PeriphConfig/PeriphConfig.c

Lines changed: 93 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -874,6 +874,12 @@ void sys_ADC1_ENABLE(void)
874874
i = 1;
875875
RCC_PeriphCLKInitTypeDef ADC_CLKInit;
876876

877+
#if SYSTEM_ADC1_useScan
878+
/*先初始化DMA,再初始化ADC*/
879+
ADC_DMA_Cfg();
880+
//HAL_ADC_Start_DMA(&ADC1_Handler, (uint32_t*)&adValue,12); //开始DMA,指定接收数组,最后一个参数为数据长度
881+
#endif
882+
877883
ADC_CLKInit.PeriphClockSelection=RCC_PERIPHCLK_ADC; //ADC外设时钟
878884
ADC_CLKInit.AdcClockSelection=RCC_ADCPCLK2_DIV6; //分频因子6时钟为72M/6=12MHz
879885
HAL_RCCEx_PeriphCLKConfig(&ADC_CLKInit); //设置ADC时钟
@@ -885,8 +891,10 @@ void sys_ADC1_ENABLE(void)
885891
ADC1_Handler.Init.ScanConvMode=DISABLE; //非扫描模式
886892
else ADC1_Handler.Init.ScanConvMode=ENABLE; //扫描模式
887893

888-
ADC1_Handler.Init.ContinuousConvMode=DISABLE; //连续转换,开启则是,触发一次转换本组所有通道,否则触发一次只转换一次
889-
894+
if(SYSTEM_ADC1_useCircular)
895+
ADC1_Handler.Init.ContinuousConvMode=ENABLE; //连续转换 开启:本次转换玩规则通道内全部通道后又自动启动下一次转换;不开启:触发一次转换一次;
896+
else ADC1_Handler.Init.ContinuousConvMode=DISABLE;
897+
890898
if(SYSTEM_ADC1_useScan)
891899
ADC1_Handler.Init.NbrOfConversion=SYSTEM_ADC1_useChanlNum; //n个转换在规则序列中
892900
else ADC1_Handler.Init.NbrOfConversion=1; //只转换规则序列1
@@ -899,32 +907,27 @@ void sys_ADC1_ENABLE(void)
899907
HAL_ADCEx_Calibration_Start(&ADC1_Handler); //校准ADC
900908

901909
if(SYSTEM_ADC1_useScan) //如果启用扫描,则把所有通道都加入到规则组里
902-
{
903-
if(SYSTEM_ADC1_useChanl & B0in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_0, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
904-
if(SYSTEM_ADC1_useChanl & B1in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_1, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
905-
if(SYSTEM_ADC1_useChanl & B2in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_2, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
906-
if(SYSTEM_ADC1_useChanl & B3in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_3, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
907-
if(SYSTEM_ADC1_useChanl & B4in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_4, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
908-
if(SYSTEM_ADC1_useChanl & B5in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_5, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
909-
if(SYSTEM_ADC1_useChanl & B6in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_6, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
910-
if(SYSTEM_ADC1_useChanl & B7in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_7, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
911-
if(SYSTEM_ADC1_useChanl & B8in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_8, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
912-
if(SYSTEM_ADC1_useChanl & B9in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_9, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
913-
if(SYSTEM_ADC1_useChanl & B10in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_10, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
914-
if(SYSTEM_ADC1_useChanl & B11in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_11, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
915-
if(SYSTEM_ADC1_useChanl & B12in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_12, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
916-
if(SYSTEM_ADC1_useChanl & B13in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_13, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
917-
if(SYSTEM_ADC1_useChanl & B14in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_14, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
918-
if(SYSTEM_ADC1_useChanl & B15in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_15, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
910+
{
911+
if((SYSTEM_ADC1_useChanl) & B1in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_0, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
912+
if((SYSTEM_ADC1_useChanl) & B2in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_1, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
913+
if((SYSTEM_ADC1_useChanl) & B3in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_2, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
914+
if((SYSTEM_ADC1_useChanl) & B4in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_3, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
915+
if((SYSTEM_ADC1_useChanl) & B5in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_4, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
916+
if((SYSTEM_ADC1_useChanl) & B6in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_5, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
917+
if((SYSTEM_ADC1_useChanl) & B7in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_6, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
918+
if((SYSTEM_ADC1_useChanl) & B8in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_7, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
919+
if((SYSTEM_ADC1_useChanl) & B9in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_8, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
920+
if((SYSTEM_ADC1_useChanl) & B10in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_9, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
921+
if((SYSTEM_ADC1_useChanl) & B11in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_10, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
922+
if((SYSTEM_ADC1_useChanl) & B12in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_11, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
923+
if((SYSTEM_ADC1_useChanl) & B13in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_12, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
924+
if((SYSTEM_ADC1_useChanl) & B14in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_13, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
925+
if((SYSTEM_ADC1_useChanl) & B15in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_14, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
926+
//if((SYSTEM_ADC1_useChanl) & 0x10) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_15, (uint32_t)(i++), ADC_SAMPLETIME_55CYCLES_5);
919927

920-
if(SYSTEM_ADC1_useChanl & InrTemp) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_TEMPSENSOR, (uint32_t)(i++), ADC_SAMPLETIME_239CYCLES_5);
928+
if((SYSTEM_ADC1_useChanl) & B16in16) ADC_RegularChannelConfig(&ADC1_Handler, ADC_CHANNEL_TEMPSENSOR, (uint32_t)(i++), ADC_SAMPLETIME_239CYCLES_5);
921929
}
922930

923-
if(SYSTEM_ADC1_useDMA1)
924-
{
925-
ADC_DMA_Cfg();
926-
HAL_ADC_Start_DMA(&ADC1_Handler, (uint32_t*)&adValue,12); //开始DMA,最后一个参数为数据长度
927-
}
928931
}
929932

930933
void ADC_RegularChannelConfig(ADC_HandleTypeDef *AdcHandle, uint32_t Channel, uint32_t Rank, uint32_t SamplingTime)
@@ -953,26 +956,42 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
953956

954957
GPIO_Initure.Mode=GPIO_MODE_ANALOG; //模拟
955958
GPIO_Initure.Pull=GPIO_NOPULL; //不带上下拉
956-
957-
if(SYSTEM_ADC1_useChanl & B0in16) {GPIO_Initure.Pin=GPIO_PIN_0; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
958-
if(SYSTEM_ADC1_useChanl & B1in16) {GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
959-
if(SYSTEM_ADC1_useChanl & B2in16) {GPIO_Initure.Pin=GPIO_PIN_2; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
960-
if(SYSTEM_ADC1_useChanl & B3in16) {GPIO_Initure.Pin=GPIO_PIN_3; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
961-
if(SYSTEM_ADC1_useChanl & B4in16) {GPIO_Initure.Pin=GPIO_PIN_4; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
962-
if(SYSTEM_ADC1_useChanl & B5in16) {GPIO_Initure.Pin=GPIO_PIN_5; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
963-
if(SYSTEM_ADC1_useChanl & B6in16) {GPIO_Initure.Pin=GPIO_PIN_6; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
964-
if(SYSTEM_ADC1_useChanl & B7in16) {GPIO_Initure.Pin=GPIO_PIN_7; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
965-
if(SYSTEM_ADC1_useChanl & B8in16) {GPIO_Initure.Pin=GPIO_PIN_0; HAL_GPIO_Init(GPIOB,&GPIO_Initure);}
966-
if(SYSTEM_ADC1_useChanl & B9in16) {GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOB,&GPIO_Initure);}
967-
if(SYSTEM_ADC1_useChanl & B10in16) {GPIO_Initure.Pin=GPIO_PIN_0; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
968-
if(SYSTEM_ADC1_useChanl & B11in16) {GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
969-
if(SYSTEM_ADC1_useChanl & B12in16) {GPIO_Initure.Pin=GPIO_PIN_2; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
970-
if(SYSTEM_ADC1_useChanl & B13in16) {GPIO_Initure.Pin=GPIO_PIN_3; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
971-
if(SYSTEM_ADC1_useChanl & B14in16) {GPIO_Initure.Pin=GPIO_PIN_4; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
972-
if(SYSTEM_ADC1_useChanl & B15in16) {GPIO_Initure.Pin=GPIO_PIN_5; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
959+
960+
if((SYSTEM_ADC1_useChanl) & B1in16) {
961+
GPIO_Initure.Pin=GPIO_PIN_0;
962+
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
963+
}
964+
if((SYSTEM_ADC1_useChanl) & B2in16) {
965+
GPIO_Initure.Pin=GPIO_PIN_1;
966+
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
967+
}
968+
if((SYSTEM_ADC1_useChanl) & B3in16) {
969+
GPIO_Initure.Pin=GPIO_PIN_2;
970+
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
971+
}
972+
if((SYSTEM_ADC1_useChanl) & B4in16) {
973+
GPIO_Initure.Pin=GPIO_PIN_3;
974+
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
975+
}
976+
if((SYSTEM_ADC1_useChanl) & B5in16) {GPIO_Initure.Pin=GPIO_PIN_4; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
977+
if((SYSTEM_ADC1_useChanl) & B6in16) {GPIO_Initure.Pin=GPIO_PIN_5; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
978+
if((SYSTEM_ADC1_useChanl) & B7in16) {GPIO_Initure.Pin=GPIO_PIN_6; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
979+
if((SYSTEM_ADC1_useChanl) & B8in16) {GPIO_Initure.Pin=GPIO_PIN_7; HAL_GPIO_Init(GPIOA,&GPIO_Initure);}
980+
if((SYSTEM_ADC1_useChanl) & B9in16) {GPIO_Initure.Pin=GPIO_PIN_0; HAL_GPIO_Init(GPIOB,&GPIO_Initure);}
981+
if((SYSTEM_ADC1_useChanl) & B10in16) {GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOB,&GPIO_Initure);}
982+
if((SYSTEM_ADC1_useChanl) & B11in16) {GPIO_Initure.Pin=GPIO_PIN_0; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
983+
if((SYSTEM_ADC1_useChanl) & B12in16) {GPIO_Initure.Pin=GPIO_PIN_1; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
984+
if((SYSTEM_ADC1_useChanl) & B13in16) {GPIO_Initure.Pin=GPIO_PIN_2; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
985+
if((SYSTEM_ADC1_useChanl) & B14in16) {GPIO_Initure.Pin=GPIO_PIN_3; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
986+
if((SYSTEM_ADC1_useChanl) & B15in16) {GPIO_Initure.Pin=GPIO_PIN_4; HAL_GPIO_Init(GPIOC,&GPIO_Initure);}
987+
//if((SYSTEM_ADC1_useChanl) & B166in16) {GPIO_Initure.Pin=GPIO_PIN_5; HAL_GPIO_Init(GPIOC,&GPIO_Initure);} 留作内部温度通道,第16个ADC1通道不可用
973988
}
974989
}
975990

991+
992+
u16 adValue[SYSTEM_ADC1_useChanlNum]; /*DMA1把ADC转换结果传送的目标位置*/
993+
u8 adValueDone = 0; /*DMA把ADC1的值传送到adValue完成标志*/
994+
976995
//获得ADC值
977996
//ch: 通道值 0~16,取值范围为:ADC_CHANNEL_0~ADC_CHANNEL_16
978997
//返回值:转换结果
@@ -985,41 +1004,27 @@ u16 Get_Adc(u32 ch)
9851004
ADC1_ChanConf.Rank=1; //第1个序列,序列1
9861005
ADC1_ChanConf.SamplingTime=ADC_SAMPLETIME_239CYCLES_5; //采样时间
9871006
HAL_ADC_ConfigChannel(&ADC1_Handler,&ADC1_ChanConf); //通道配置
1007+
1008+
HAL_ADC_Start(&ADC1_Handler); //开启ADC
1009+
HAL_ADC_PollForConversion(&ADC1_Handler,2); //轮询转换
1010+
return (u16)HAL_ADC_GetValue(&ADC1_Handler); //返回最近一次ADC1规则组的转换结果
1011+
}else
1012+
{
1013+
return 1357;
9881014
}
989-
990-
HAL_ADC_Start(&ADC1_Handler); //开启ADC
991-
HAL_ADC_PollForConversion(&ADC1_Handler,2); //轮询转换
992-
return (u16)HAL_ADC_GetValue(&ADC1_Handler); //返回最近一次ADC1规则组的转换结果
9931015
}
9941016

995-
void Get_Adc_Average(u32 ch,u8 times,u32* result)
1017+
u32 Get_Adc_Average(u32 ch,u8 times)
9961018
{
997-
u32 temp_val[SYSTEM_ADC1_useChanlNum]= {0};
998-
u8 t,i;
1019+
u32 temp_val = 0;
1020+
u8 t;
9991021

1000-
if (SYSTEM_ADC1_useScan)
1022+
for(t=0;t < times;t++)
10011023
{
1002-
for(t=0;t < times;t++)
1003-
{
1004-
for(i = 0;i < SYSTEM_ADC1_useChanlNum; i++)
1005-
{
1006-
temp_val[i] += Get_Adc(ch);
1007-
delay_ms(1);
1008-
}
1009-
}
1010-
1011-
for(i = 0;i < SYSTEM_ADC1_useChanlNum; i++)
1012-
{
1013-
result[i] = temp_val[i]/times;
1014-
}
1015-
}else{
1016-
for(t=0;t < times;t++)
1017-
{
1018-
temp_val[0] += Get_Adc(ch);
1019-
delay_ms(1);
1020-
}
1021-
result[0] = temp_val[0]/times;
1024+
temp_val += Get_Adc(ch);
1025+
delay_ms(1);
10221026
}
1027+
return (temp_val/times);
10231028
}
10241029

10251030
/*把AD采集温度通道的原始值,转化为温度值*/
@@ -1031,7 +1036,7 @@ float Get_Temprate(u32 adcx)
10311036
return temperate;
10321037
}
10331038

1034-
#if SYSTEM_ADC1_useDMA1
1039+
#if SYSTEM_ADC1_useScan
10351040
DMA_HandleTypeDef ADC1rxDMA_Handler; //DMA句柄
10361041

10371042
//DMA1的各通道配置
@@ -1047,8 +1052,12 @@ void ADC_DMA_Cfg(void)
10471052
ADC1rxDMA_Handler.Init.MemInc=DMA_MINC_ENABLE; //存储器增量模式
10481053
ADC1rxDMA_Handler.Init.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD; //外设数据长度:16位
10491054
ADC1rxDMA_Handler.Init.MemDataAlignment=DMA_MDATAALIGN_HALFWORD; //存储器数据长度:16位
1050-
ADC1rxDMA_Handler.Init.Mode=DMA_CIRCULAR; //不确定是正常博士还是外设循环模式
1051-
ADC1rxDMA_Handler.Init.Priority=DMA_PRIORITY_HIGH; //优先级
1055+
1056+
if(SYSTEM_ADC1_useCircular)
1057+
ADC1rxDMA_Handler.Init.Mode=DMA_CIRCULAR; //如果ADC选择连续模式,这里是循环,如果不开启连续模式,这里是正常模式
1058+
else ADC1rxDMA_Handler.Init.Mode=DMA_NORMAL;
1059+
1060+
ADC1rxDMA_Handler.Init.Priority=DMA_PRIORITY_MEDIUM; //优先级
10521061

10531062
ADC1rxDMA_Handler.XferCpltCallback = HAL_DMA_IRQHandler;
10541063

@@ -1058,17 +1067,21 @@ void ADC_DMA_Cfg(void)
10581067
/* 数据源 数据源句柄中的DMA变量 使用的DMA句柄*/
10591068
__HAL_LINKDMA(&ADC1_Handler,DMA_Handle,ADC1rxDMA_Handler); //将DMA与ADC联系起来(发送DMA)
10601069

1061-
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 3, 0); //DMA中断优先级
1070+
HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 3, 0); //DMA中断优先级 必须开,勿动!
10621071
HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); //使能DMA中断
10631072

10641073
}
10651074

1066-
// DMA通道1中断服务函数 (完成传送时的中断)
1075+
//DMA通道1中断服务函数,完成传送一次时的中断,不用,因为要等AD全部规则通道转换完后再产生一次中断
10671076
void DMA1_Channel1_IRQHandler(void)
10681077
{
1069-
HAL_DMA_IRQHandler(&ADC1rxDMA_Handler);
1070-
//printf("%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d\r\n",advalue[0],advalue[1],advalue[2],advalue[3],advalue[4],advalue[5],advalue[6],advalue[7],advalue[8],advalue[9],advalue[10],advalue[11]);
1071-
adValueDone = 1;
1078+
HAL_DMA_IRQHandler(&ADC1rxDMA_Handler); /*清除中断标志,并判断是否完成全部转换,勿动!*/
1079+
}
1080+
1081+
//HAL_DMA_IRQHandler的回调函数,ADC转换完成所有规则组通道后的中断函数
1082+
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
1083+
{
1084+
adValueDone = 1; /*标志本次规则组通道全部转换完成,勿动!*/
10721085
}
10731086

10741087
#endif
@@ -1478,7 +1491,7 @@ u16 STMFLASH_ReadHalfWord(u32 faddr)
14781491

14791492

14801493
/*__________________________DAC________________________________________*/
1481-
#if SYSTEM_DAC_OUT1_ENABLE||SYSTEM_DAC_OUT2_ENABLE
1494+
#if ((SYSTEM_DAC_OUT1_ENABLE) || (SYSTEM_DAC_OUT2_ENABLE)) && ((STM32F103xG) || (STM32F103xE))
14821495

14831496
DAC_HandleTypeDef DAC1_Handler;//DAC句柄
14841497

@@ -1567,7 +1580,7 @@ void DAC_Set_Ch2_Vol(float vol)
15671580
#endif
15681581

15691582
/*____________________SDIO SD_____________________________________________*/
1570-
#if SYSTEM_SDIO_SD_ENABLE
1583+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
15711584

15721585
SD_HandleTypeDef SDCARD_Handler; //SD卡句柄
15731586
HAL_SD_CardInfoTypeDef SDCardInfo; //SD卡信息

STM32F1_HAL_freeRTOS_Framework/SYSTEM/PeriphConfig/PeriphConfig.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,12 +189,12 @@ int32_t peek_TIM2_Encoder_Value(void);
189189
/*_______________________________ADC1___________________________________*/
190190
extern ADC_HandleTypeDef ADC1_Handler;
191191
void sys_ADC1_ENABLE(void);
192-
void Get_Adc_Average(u32 ch,u8 times,u32* result);
192+
u32 Get_Adc_Average(u32 ch,u8 times);
193193
float Get_Temprate(u32 adcx);
194194
#if SYSTEM_ADC1_ENABLE
195195
void ADC_RegularChannelConfig(ADC_HandleTypeDef *AdcHandle, uint32_t Channel, uint32_t Rank, uint32_t SamplingTime);
196196
u16 Get_Adc(u32 ch);
197-
#if SYSTEM_ADC1_useDMA1
197+
#if SYSTEM_ADC1_useScan
198198
extern DMA_HandleTypeDef ADC1rxDMA_Handler;
199199
void ADC_DMA_Cfg(void);
200200
#endif
@@ -248,7 +248,7 @@ void sys_CheckWKUP_4RTOS(void);
248248

249249
/*_____________________________________DAC________________________________________*/
250250

251-
#if SYSTEM_DAC_OUT1_ENABLE||SYSTEM_DAC_OUT2_ENABLE
251+
#if ((SYSTEM_DAC_OUT1_ENABLE) || (SYSTEM_DAC_OUT2_ENABLE)) && ((STM32F103xG) || (STM32F103xE))
252252
extern DAC_HandleTypeDef DAC1_Handler;//DAC句柄
253253
void sys_DAC_ENABLE(void);
254254
void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac);
@@ -261,14 +261,14 @@ void DAC_Set_Ch2_Vol(float vol);
261261

262262
/*____________________SDIO SD_____________________________________________*/
263263

264-
extern HAL_SD_CardInfoTypeDef SDCardInfo; //SD卡信息
265-
extern HAL_SD_CardCIDTypeDef SDCard_CID; //SD卡CID信息
266264
u8 SD_Init(void);
267265
u8 SD_ReadDisk(u8* buf,u32 sector,u32 cnt);
268266
u8 SD_WriteDisk(u8 *buf,u32 sector,u32 cnt);
269267
void show_sdcard_info(void); //通过串口1打印SD卡相关信息
270-
#if SYSTEM_SDIO_SD_ENABLE
268+
#if (SYSTEM_SDIO_SD_ENABLE) && ((STM32F103xG) || (STM32F103xE))
271269

270+
extern HAL_SD_CardInfoTypeDef SDCardInfo; //SD卡信息
271+
extern HAL_SD_CardCIDTypeDef SDCard_CID; //SD卡CID信息
272272
extern SD_HandleTypeDef SDCARD_Handler; //SD卡句柄
273273
#define SD_TIMEOUT ((uint32_t)100000000) //超时时间
274274

0 commit comments

Comments
 (0)