【1】实验要求:
STM32上电LED(PB0)灯亮 ,当检测到按键(PA8)按下时处理中断事件,变量i++
扩展:知识点
响应优先级->在两个中断同时触发时,且这两个中断的优先级相同,响应优先级高先执行
验证:扩展知识->仿真的使用
寄存器仿真控制 查看
知识点:消抖
方法一:进入中断赋值标号,然后main函数中判断标号,用HAL_Delay消抖
方法二:使用定时器中断消抖
方法三:自己写个延时函数
uint8_t i=0;
void delay(int time)
{
}
void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_8)//判断是不是GPIO_PIN_8
{
delay(100);
if(GPIO_Pin==GPIO_PIN_8)//判断是不是GPIO_PIN_8
{
i++;
}
}
}
【2】串口中断实验
发送完成中断实验
实验要求:主程序发送一句字符串“helloworld”,当这条字符串发送完成时触发中断事件,调用中断服务程序发送“UART Transmit completed!”
实验步骤:
1.打开CubeMX,创建新项目,配置USART1为异步,以及NVIC全局中断
2.发送函数
3.找到串口1的中断服务程序
4. 当发送结束时调用UART_EndTransmit()
5. 找到发送完成中断回调函数:
6.重写发送完成回调函数:
7.实验现象:
当串口发送完“helloworld”之后产生发送完成事件触发中断,执行中断服务程序,并输出“UART Transmit completed!”
【3】 串口接收中断实验
实验要求:主程序接收到2个字符触发中断,中断服务程序发送“收到了”
1.主程序main.c
2.中断服务程序usart.c
【4】显示屏显示计时时间
1. 显示屏显示计时时间,格式为00:00:00,时间以秒为单位自加,当检测到按键按下之后,时间归零,继续从0开始计时。
1.STM32G030C8T6查看底板原理图
2.查看核心板底座原理图
3.打开STM32CubeMX新建工程配置对应引脚
4.将驱动文件放到工程目录下