正点原子学习小组
直播中

HonestQiao

8年用户 541经验值
擅长:嵌入式技术
私信 关注
[经验]

【正点原子STM32H7R3开发套件试用体验】4G联网工业设备控制网关

这次有幸参加 正点原子STM32H7R3开发套件 的评测,计划使用 正点原子STM32H7R3开发套件,来完成一个 4G联网工业设备控制网关。

评测计划:

1. 通过正点原子开发板资料和视频PPT资料,了解STM32H7R3开发套件的功能。
2. 接入Air780E,实现开发板通过4G联网
3. 对接FastBee物联网平台,实现数据上报和命令下发
4. 移植OTA功能,实现在线OTA升级
5. 通过物联网平台,采集传感器数据,并控制实际的外设,实现一款工业设备控制网关

在之前一篇帖子中,有 开发套件开箱报告

评测和实现的过程,将会逐步分享。

回帖(6)

HonestQiao

4 天前

跑马灯


正点原子STM32H7R3开发套件 上,提供的板载设备很多:
image.png


但玩板子的第一件事,就是点灯。


从上图可以得知,用户LED有两颗,可以做跑马灯,交互点亮。


从官方手册页可以得知用户LED的具体硬件原理图:
image.png


在官方的例程中,也提供了跑马灯的演示代码。不过这么简单的事情,就自己做一下吧。


1、先在STM32CubeIDE中,创建一个STM32H7R3L8H6H的工程:
image.png


2、设置GPIO,开启用户LEDimage.png


参考原理图,LED0对应GPIO PD14,LED1对应GPIO PC0。


3、编写LED开启和关闭的快捷调用


可以参考官方提供的示例代码,也可以自己写,比较简单:


/* Private defines -----------------------------------------------------------*/

#define LED1_Pin GPIO_PIN_0
#define LED1_GPIO_Port GPIOC
#define LED0_Pin GPIO_PIN_14
#define LED0_GPIO_Port GPIOD


/* USER CODE BEGIN Private defines */
/* IO操作 */
#define LED0(x)                 do { (x) ?                                                              \\\\                                   HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET):     \\\\
                                    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);   \\\\
                                } while (0)
#define LED1(x)                 do { (x) ?                                                              \\\\                                   HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET):     \\\\
                                    HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);   \\\\
                                } while (0)
#define LED0_TOGGLE()           do { HAL_GPIO_TogglePin(LED0_GPIO_PORT, LED0_GPIO_PIN); } while (0)
#define LED1_TOGGLE()           do { HAL_GPIO_TogglePin(LED1_GPIO_PORT, LED1_GPIO_PIN); } while (0)
/* USER CODE END Private defines */

4、在main中控制LED


/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
  {
      LED0(0);        /* 开启LED0 */
      LED1(1);        /* 关闭LED1 */
      HAL_Delay(500);  /* 延时500毫秒 */

      LED0(1);        /* 关闭LED0 */
      LED1(0);        /* 开启LED1 */
      HAL_Delay(500);  /* 延时500毫秒 */
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
  }
/* USER CODE END 3 */

5、编译


编写完成后,直接编译即可:
image.png


如果编译时,出现-fcyclomatic-completxity,可以在如下的项目设置中取消对应的选项:
image.png


6、运行


在调试配置中,添加对应的运行配置,并设置好调试器的类型:
image.png


image.png


后面有机会,会使用STLink、DAPLink、J-Link等多种调试器测试。


然后使用该运行配置运行或者调试即可:
image.png


7、运行效果


直接看视频:
test1.gif


举报

HonestQiao

4 天前

从手册可以得知,STM32H7R3提供了丰富的定时器功能:
image.png


这篇测试,就使用TIM14,来做PWM输出,控制LED呈现呼吸灯效果。


1、定时器TIM14设置

从手册可以得知,TIM14挂在AHB2上:
image.png


从MX设置中,可以的之具体的时钟频率:
image.png


要实现PWM输出,可以试用如下的公式进行计算:(参考:STM32H7系列教程(4)脉冲宽度调制(PWM)_stm32h7 pwm)


Fpwm =Tclk / ((arr+1)*(psc+1))(单位:Hz)
arr 是计数器值
psc 是预分频值

根据时钟频率,具体结果如下:


时钟频率设置为Tclk=300MHZ
自动装载值为ARR=499
设置预分频系数PSC=299
pwm频率=300000000/(500*300)=2kHz
占空比设置成50%,将获得一个1KHz的频率

根据上面的计算结果,设置TIM14如下:
image.png


需要注意正点原子STM32H7R3开发套件的板载LED,低电平点亮,所以需要将CH Polarity设置为LOW。


2、调用代码

在main.c中,适当的位置添加对应的代码:


/* USER CODE BEGIN PV */
uint16_t pwmval=0;   //PWM占空比
/* USER CODE END PV */

/* USER CODE BEGIN 2 */
//  LED0(1);        /* 开启LED0 */
  LED1(1);        /* 关闭LED1 */

  HAL_TIM_PWM_Start(&htim14,TIM_CHANNEL_1); //开启PWM对应的通道
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
  {
                for(pwmval=0;pwmval<=400;pwmval++)
                {
                        __HAL_TIM_SetCompare(&htim14, TIM_CHANNEL_1, pwmval);    //修改占空比
                        HAL_Delay(1);
                }
                  HAL_Delay(200);
                for(pwmval=400;pwmval>0;pwmval--)
                {
                        __HAL_TIM_SetCompare(&htim14, TIM_CHANNEL_1, pwmval);    //修改占空比
                        HAL_Delay(1);
                }
                HAL_Delay(200);
#endif
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
  }
/* USER CODE END 3 */

修改完成后,保存编译。


3、运行效果

实际运行前,需要将PD14和PF9连接,以便PWM输出控制LED0:
image.png


最终,实际的运行效果如下:


举报

HonestQiao

4 天前
举报

申小林一号

3 天前
支持一下大佬!!!!!!!!!!
1 举报

更多回帖

发帖
×
20
完善资料,
赚取积分