一、新建工程
1、选择芯片型号
2、配置时钟RCC
选择 HSE(外部高速时钟) 为 Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
3、时钟树配置
在clock Configuration中将HCLK配置为最高频率然后回车
4、选择调试模式
SYS 设置,选择 Debug 为 Serial Wire
Timebase Source时钟源可以选择SysTick
二、GPIO输出
2.1参数配置
点击引脚选择GPIO_Output,再点击GPIO里的引脚,进行配置
2.2生成代码
每个外设生成独立的 ’.c/.h’
文件
不勾:所有初始化代码都生成在 main.c
勾选:初始化代码生成在对应的外设文件。 如 GPIO 初始化代码生成在 gpio.c 中。如下:
最后点击右上角的GENERATE CODE 。
点亮LED
/**
* @brief The application entry point.
* @retval int
*/
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();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
GPIO_SetBits(LED_GPIO_PORT, LED1_GPIO_PIN); // 输出高电平
HAL_Delay(1000); // 1秒
GPIO_ResetBits(LED_GPIO_PORT, LED1_GPIO_PIN); // 输出低电平
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
三、GPIO输入
3.1 参数配置
在 System Core
中选择 GPIO
设置。
在右边图中找到按键对应引脚,选择 GPIO_Input
。
生成代码同上面的GPIO输出的操作一样。
示例:读取引脚电平
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t status = 0;
/* 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();
/* USER CODE BEGIN 2 */
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
// 可以加打印看'status'数值判断高低电平
status = HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin); // 读取按键状态
HAL_Delay(1000); // 1秒
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
四、注意事项
用户代码要加在 USER CODE BEGIN N
和 USER CODE END N
之间,否则下次使用 STM32CubeMX 重新生成代码后,会被删除。