stm中断与DMA通信编程


一、stm32CubeMX工程设置

1.打开stm32Cube软件,建立工程
在这里插入图片描述
2.配置RCC
如图:
在这里插入图片描述
3.配置时钟树
如图,在蓝框处设置成72,然后按回车。
在这里插入图片描述
4.设置SYS如图:
在这里插入图片描述
5.设置引脚及参数
在这里插入图片描述
将A6设置为GPIO_OUTPUT;B12设置为GPIO_EXTIO.
然后设置B12如图
在这里插入图片描述
6.设置NVIC
如图将灰色处勾选并设置成15.
在这里插入图片描述
6.Project与Code Generator配置
红框处从上往下依次是文件名,文件路径,编辑工具和stm包。
在这里插入图片描述

Code Generator进行如下配置
在这里插入图片描述
然后点击GENERATE CODE生成文件,并打开工程。
在这里插入图片描述

二、编译程序控制小灯。

1.这里有个弱函数的概念,__weak意为弱函数。其意义是,当我们重写一个相同的函数时,则会调取新函数。
编写此函数代码如下:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
 GPIO_PinState b0 = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_12); 
 
 switch (GPIO_Pin){
  case GPIO_PIN_12:
   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, b0);  
   break;
 }
 
}

放入main.c文件的如图位置BEGIN4与END4之间:
在这里插入图片描述
实验结果如下:
在这里插入图片描述

三、中断控制串口通信

1.设置参数,放在include代码的后面行。

uint8_t a[1];
uint8_t b[]="hello\n";

2.启动中断,放在主函数while函数前。

HAL_UART_Receive_IT(&huart1,(uint8_t *)&a,1);

3.重写回调函数

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	HAL_UART_Receive_DMA(&huart1,(uint8_t *)b,sizeof(b));
	HAL_UART_Transmit_DMA(&huart1,(uint8_t *)b,sizeof(b));
}

4.烧录程序并查看结果。
如图:
在这里插入图片描述

总结

中断控制能解放CPU,还是很好用的。stm32的中断控制感觉上要比C51要难很多。总的来说中断控制是个很重要的内容,所以还是要加强掌握。

参考链接:
https://blog.csdn.net/weixin_46628481/article/details/121056373
https://blog.csdn.net/qq_60678931/article/details/121051054
https://blog.csdn.net/qq_45396672/article/details/113926212

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值