[STM32H5] 【NUCLEO-H563ZI测评】6.IWDG+CRC+HASH测试

[复制链接]
 楼主| yuyy1989 发表于 2023-7-23 10:37 | 显示全部楼层 |阅读模式
<
#申请原创# @21小跑堂  
6.IWDG+CRC+HASH测试
6.1IWDG测试
IWDG(Independent Watchdog)独立看门狗,独立看门狗一般用来检测和解决由程序引起的故障,如果程序因为某些原因一直卡在一个位置,超过一段时间没有“喂狗”就会使系统复位。
打开STM32CubeMX,先看看时钟树,找到IWDG,可以看到IWDG是用的32Khz的内部时钟
QQ截图20230721234405.png
找到IWDG的设置开启它,配置超时时间为1秒
QQ截图20230722182254.png
接下来写个程序,按键按下时保持死循环,看看看门狗会不会触发

  1. void usercode_loop(void)
  2. {
  3.     yuyy_delay_ms(400);
  4.     HAL_GPIO_TogglePin(LED2_YELLOW_GPIO_Port,LED2_YELLOW_Pin);
  5.     yuyy_delay_ms(200);
  6.     HAL_GPIO_TogglePin(LED3_RED_GPIO_Port,LED3_RED_Pin);
  7.     yuyy_delay_ms(200);
  8.     HAL_IWDG_Refresh(&hiwdg);
  9.     if(HAL_GPIO_ReadPin(USER_BUTTON_GPIO_Port,USER_BUTTON_Pin) == GPIO_PIN_SET)
  10.     {
  11.         HAL_GPIO_WritePin(LED1_GREEN_GPIO_Port,LED1_GREEN_Pin,GPIO_PIN_SET);
  12.         yuyy_delay_ms(10);
  13.         while(HAL_GPIO_ReadPin(USER_BUTTON_GPIO_Port,USER_BUTTON_Pin) == GPIO_PIN_SET);
  14.     }
  15. }
这段代码会让红色和黄色LED循环亮起熄灭,按下按键后绿色LED会亮起,触发看门狗复位后所有LED都会熄灭,运行效果
WeChat_20230722184207 00_00_00-00_00_30.gif
6.2CRC测试
CRC(Cyclic Redundancy Check)即循环冗余校验码,是数据通信领域中最常用的一种查错校验码,常用于验证接收到的数据是否完整,例如之前用到的DHTC12在接收到数据后就要用CRC来校验。
QQ截图20230723102943.png
STM32H563拥有硬件CRC校验,接下来写个程序,用CRC校验串口发送的数据,并将校验结果用串口返回
打开STM32CubeMX,找到CRC并开启,先用默认的CRC测试一下

  1. void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
  2. {
  3.     uint8_t out[20] = {0},len=0;
  4.     uint32_t crc;
  5.     if(huart->RxEventType == HAL_UART_RXEVENT_IDLE)
  6.     {
  7.         crc = HAL_CRC_Calculate(&hcrc,uartrxbuffer,Size);
  8.         len = sprintf(out,"CRC结果:%08X",crc);
  9.         HAL_UART_Transmit(huart,out,len,100);
  10.         HAL_UARTEx_ReceiveToIdle_IT(huart,uartrxbuffer,UARTRXBUFFERLEN);
  11.     }
  12. }
看看效果
QQ截图20230722191428.png
另外还可以使用其它CRC校验公式,换成CRC16的试试
QQ截图20230722194303.png
计算结果
QQ截图20230722194240.png
6.3HASH测试
HASH算法能将将任意长度的二进制明文映射为较短的二进制串的算法,该过程是不可逆的,并且不同的明文很难映射为相同的HASH值。
STM32H563提供了HASH硬件加速,接下来尝试一下
QQ截图20230722195052.png
打开STM32CubeMX,找到HASH并开启
QQ截图20230722195645.png
仍然通过串口输入数据,将HASH结果返回

  1. void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
  2. {
  3.     uint8_t sha256[32];
  4.     if(huart->RxEventType == HAL_UART_RXEVENT_IDLE)
  5.     {
  6.         HAL_HASH_Start(&hhash,uartrxbuffer,Size,sha256,1000);
  7.         HAL_UART_Transmit(huart,sha256,32,100);
  8.         HAL_UARTEx_ReceiveToIdle_IT(huart,uartrxbuffer,UARTRXBUFFERLEN);
  9.     }
  10. }
计算结果
QQ截图20230722200713.png
y1n9an 发表于 2024-1-12 16:38 | 显示全部楼层
HASH是硬件的么?
suw12q 发表于 2024-1-12 16:42 | 显示全部楼层
CRC其实用模拟的方式也是可以的
w2nme1ai7 发表于 2024-1-12 17:18 | 显示全部楼层
这种CRC是不是和模拟CRC得出的结果可能会不一样?
su1yirg 发表于 2024-1-12 17:32 | 显示全部楼层
话说,这芯片是不是有程序加密的功能?用的是啥模块
p0gon9y 发表于 2024-1-12 19:36 | 显示全部楼层
学习了,看门狗这么配置就可以了
tax2r6c 发表于 2024-1-12 20:17 | 显示全部楼层
这种配置是不是和其他ST的MCU利用cubemx配置是类似的啊
q1d0mnx 发表于 2024-1-13 07:33 | 显示全部楼层
没玩过HASH,这一般都应用在哪儿?
lamanius 发表于 2024-1-13 08:14 | 显示全部楼层
之前用过CRC,我是用在数据完整性校验方面会用到这个
kaif2n9j 发表于 2024-1-13 09:30 | 显示全部楼层
感觉楼主玩cubemx真的很熟练啊,是看啥教程的吗?
l1uyn9b 发表于 2024-1-13 11:00 | 显示全部楼层
哈希感觉很好玩的样子,这是不是硬件哈希就生成的速度很快啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:同飞软件研发工程师
简介:制冷系统单片机软件开发,使用PID控制温度

161

主题

815

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部
认证:同飞软件研发工程师
简介:制冷系统单片机软件开发,使用PID控制温度

161

主题

815

帖子

10

粉丝
快速回复 在线客服 返回列表 返回顶部