IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CUBEMX生成按键控制PWM_LED灯 -> 正文阅读

[嵌入式]STM32CUBEMX生成按键控制PWM_LED灯

STM32CUBEMX配置

1.
PWM设置:本次实验中采用按键控制PWM占空比来修改LED灯的亮度。
采用的定时器:Timer3,对应通道2选择PWM模式,在这里插入图片描述
由于DS0外部连接的LED上接高电平,因而从0—1000对应的占空比值选择低极性模式。

其次是串口配置,使用usart1来给电脑发送串口信息,
在这里插入图片描述
回调函数:
使用了STM32CUBEMX这么久,我也是第一次学习回调函数。
单片机在执行终端服务函数之前,Cortex-M3内核线将现在使用到的寄存器和主程序中断点的地址压入堆栈,然后程序在中断向量表中找到中断对应的地址。这个地址存储的为中断服务函数的入口地址。然后程序跳转到中断服务函数执行。
在这里插入图片描述
然后再次进入HAL_GPIO_EXTI_IRQHandler();函数的定义
在这里插入图片描述
在这里,这个函数中CUBEMX已经自动把标志位清除了,我们不需要关心标志位的问题,因此我们通过stm32cubemx可以少碰或者不碰硬件层的问题,只用做好应用层的开发就够了。
下面的weak是弱化函数,就是你可以在其他地方写一个名称和参数都一模一样的函数,然后编译器就会忽略这个函数。(用来防报错)

本次实验中遇到的几个问题:
问题一:
设置外部中断时,因为存在系统时钟的中断优先级为0,与原先设置的外部中断优先级为0相冲突,因而我们在设置中断优先级的时候,要把外部中断的优先级设置低一级,这样就能在外部中断的回调函数中调用HAL_Delay()这个函数时,能够正常进行处理。
看了很多博客中说道,回调函数需要放到stm32f1xx_it.c这个文件中,但是在我实际的尝试中发现,放在主函数中也是一样能够正常运行的。
在这里插入图片描述在这里插入图片描述
问题二:
在使用回调函数处理PWM比较值的时候,需要进行pwmVAL值的修改,放在回调函数中处理即可。
不过在主函数中,对PWM进行输出时,必须加上前面的Delay函数,否则对LED灯的控制就会出现异常。
在这里插入图片描述
问题三:
对定时器二进行PWM输出时,未能够进行双通道输出,通过逻辑分析仪捕获到的波形也只有单通道的波形,这好像是HAL库的问题,具体原因还在寻找。

	在使用HAL库进行串口输出时,最好加上重定向函数,这样能方便用printf函数直接输出。
在这里插入代码片
```int fputc(int ch, FILE *f)

{
  uint32_t temp = ch;

  // HAL_GPIO_WritePin(RE485_GPIO_Port, RE485_Pin, GPIO_PIN_SET);
  HAL_UART_Transmit(&huart1, (uint8_t *)&temp, 1, 1000);
  while (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) != SET)
    ; //等待发送结束
  // HAL_GPIO_WritePin(RE485_GPIO_Port, RE485_Pin, GPIO_PIN_RESET);
  //     HAL_Delay(2);

  return ch;
}


还学习了外部事件和外部中断的区别:

https://blog.csdn.net/tanyjin/article/details/53359883

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:36:10  更:2021-12-04 13:36:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:14:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码