外设接口

#STM32开发 #C-Language

GPIO

LL库

读电平

uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask);

写电平

void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask);
void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask);

翻转电平

void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask); //翻转GPIO

复用JTAG IO为普通IO

// todo
LL_GPIO_AF_Remap_SWJ_NOJTAG();

HAL库

复用JTAG IO为普通IO

__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_AFIO_REMAP_SWJ_NOJTAG();

ADC

CubeMX配置详解

CubeMX默认配置图
javaw_I7t8h99PuJ.png
配置项:

  • ADCs_Common_Settings
    • Mode
      • Indenpendent Mode
  • ADC_Settings
    • Data Alignment。数据对齐功能,参考外设接口 > ADC数据对齐功能,通常选右对齐。
      • Left alignment
      • Right alignment
    • Scan Conversion Mode
      • Enabled
      • Disabled
    • Continuous Conversion Mode(连续转换模式、配置是启动自动连续转换还是单次转换)
      • Enabled、使能自动连续转换
      • Disabled、转换一次后停止需要手动控制才重新启动转换
    • Discontinuous Conversion Mode
      • Enabled
      • Disabled
  • ADC_Regular_ConversionMode
    • Enable Regular Conversions
    • Number Of Conversion
    • External Trigger Conversion Source

ADC数据对齐功能

LL库 无DMA

初始化

代码段 MX_ADCx_Init 中增加:

LL_ADC_Enable(ADCx);                       // 使能ADC 
LL_ADC_StartCalibration(ADCx);             // 校准ADC
while(LL_ADC_IsCalibrationOnGoing(ADCx));  // 等待ADC校准完成

读取ADC数值

uint16_t ADC_Value = 0;
LL_ADC_REG_SetSequencerRanks(ADCx, LL_ADC_REG_RANK_1, Channel);
LL_ADC_REG_StartConversionSWStart(ADCx);
while(!LL_ADC_IsActiveFlag_EOS(ADCx));
ADC_Value = LL_ADC_REG_ReadConversionData12(ADCx);

LL库 使用DMA

初始化