1.开发环境

硬件开发板:
nucleo-G070BR
使用的软件:
1.1 STM32CubeMX
1.2 DMK
1.3 STM32CubeIDE
常用文档:
开发板原理图
HAL 函数文档

1.1 STM32CubeMX
1.2 DMK
1.3 STM32CubeIDE

2. GPIO

2.1 output

简单控制LED亮灭。用STM3232CubeMX生产项目给MDK.

问题 1.MDK软件仿真不了,出现死循环
问题 2. 硬件仿真时间计算不了,晚上很多介绍设置TRACE但是一设置出现硬件问题提示。
1.2 Input

通过按键控制LED。不知道怎么看运行时间无法判断延时时间是否正确。

问题 1.STM32cubeMX 重新配置之后有限代码丢失:

CubeMX会删除不符合格式的代码。需要在里面注释可以写用户代码的地方插入代码。
在这里插入图片描述

问题 2.STM32cubeMX 运行修改变量

后面整个都要输入才可以。在这里插入图片描述

1.2 GPIO 中断

中断触发条件:上升沿、下降沿和上升下降沿触发。
在这里插入图片描述

1.2.1 外部中断

1.触发中断进入中断服务函数有会调用清除中断标志位
__HAL_GPIO_EXTI_CLEAR_RISING_IT(GPIO_Pin);
HAL_GPIO_EXTI_CLEAR_FALLING_IT(GPIO_Pin);
2.之后调用回传函数
HAL_GPIO_EXTI_Rising_Callback(GPIO_Pin);
HAL_GPIO_EXTI_Falling_Callback(GPIO_Pin);
3.用户程序可以重写回传函数来完成或者在中断入口函数里面。
所有相同中断入口中断源,可以在回传函数里面手动判断具体那一个中断源引起的中断。在进行相应处理。
void HAL_GPIO_EXTI
***Callback(uint16_t GPIO_Pin)
{
switch(GPIO_Pin)
{
case GPIO_PIN
:
case GPIO_PIN
:
default:break;
}
}

1.2.2 外部事件

G07中断线EXTI_LINE_11可以作为ADC触发事件。

1.2.3 内部软件中断或事件
  1. __HAL_GPIO_EXTI_GENERATE_SWIT(EXTI_LINE) 两个下划线开头。EXTI_LINE = GPIO_PIN_X;硬件中断如果是 PC7则GPIO_PIN_7. 不能使用EXTI_LINE_7.
  2. 用HAL_EXTI_GenerateSWI(&Soft_exit);
    EXTI_HandleTypeDef Soft_exit;
    Soft_exit.Line = EXTI_LINE_13;
    HAL_EXTI_GenerateSWI(&Soft_exit);
    //必须与硬件中断口对应的中断线一致。不能使用GPIO_PIN_7,或者其他中断线。

3).G07系列软件 中断只有上升沿中断。
在这里插入图片描述

*问题 1.不理解下面结构体里面第2和第3个具体作用

typedef struct
{
uint32_t Line; /!< Exti line number /
void (
RisingCallback)(void); /
!< Exti rising callback /
void (
FallingCallback)(void); /*!< Exti falling callback */
} EXTI_HandleTypeDef;

1.2.4 唤醒功能

跟低功耗相关后面在学习。

3.高级控制定时器TIM1

3.1 基本定时

1.Cube_MX初始化TIM1
更新寄存器之后会使中断标志位置位。开允许中断使能将进入中断。
在这里插入图片描述
在这里插入图片描述
2. HAL_TIM_Base_Start_IT(&htim1);开启中断使能。
为了避免一开中断使能就进入中断。
可以用:__HAL_TIM_CLEAR_FLAG(&htim1, TIM_SR_UIF);除去中断标志位。启动计时器之后由硬件置位。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐