📝 官方外设示例代码
// STM32 HAL库 - GPIO初始化+翻转
#include "stm32f1xx_hal.h"
void GPIO_Init(void) {
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef g = {0};
g.Pin = GPIO_PIN_13;
g.Mode = GPIO_MODE_OUTPUT_PP;
g.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &g);
}
int main(void) {
HAL_Init(); GPIO_Init();
while(1) {
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}
}
// STM32 HAL库 - USART1发送+接收中断
UART_HandleTypeDef huart1;
void USART1_Init(void) {
__HAL_RCC_USART1_CLK_ENABLE();
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
HAL_UART_Init(&huart1);
HAL_NVIC_EnableIRQ(USART1_IRQn);
}
// PA9=TX, PA10=RX
// STM32 HAL库 - ADC单次采集
ADC_HandleTypeDef hadc1;
uint16_t ADC_Read(uint32_t ch) {
ADC_ChannelConfTypeDef s = {0};
s.Channel = ch; s.Rank = 1;
s.SamplingTime = ADC_SAMPLETIME_55CYCLES_5;
HAL_ADC_ConfigChannel(&hadc1, &s);
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
return HAL_ADC_GetValue(&hadc1);
}