打印
[STM32H5]

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

[复制链接]
507|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创# @21小跑堂  
6.IWDG+CRC+HASH测试
6.1IWDG测试
IWDG(Independent Watchdog)独立看门狗,独立看门狗一般用来检测和解决由程序引起的故障,如果程序因为某些原因一直卡在一个位置,超过一段时间没有“喂狗”就会使系统复位。
打开STM32CubeMX,先看看时钟树,找到IWDG,可以看到IWDG是用的32Khz的内部时钟

找到IWDG的设置开启它,配置超时时间为1秒

接下来写个程序,按键按下时保持死循环,看看看门狗会不会触发

void usercode_loop(void)
{
    yuyy_delay_ms(400);
    HAL_GPIO_TogglePin(LED2_YELLOW_GPIO_Port,LED2_YELLOW_Pin);
    yuyy_delay_ms(200);
    HAL_GPIO_TogglePin(LED3_RED_GPIO_Port,LED3_RED_Pin);
    yuyy_delay_ms(200);
    HAL_IWDG_Refresh(&hiwdg);
    if(HAL_GPIO_ReadPin(USER_BUTTON_GPIO_Port,USER_BUTTON_Pin) == GPIO_PIN_SET)
    {
        HAL_GPIO_WritePin(LED1_GREEN_GPIO_Port,LED1_GREEN_Pin,GPIO_PIN_SET);
        yuyy_delay_ms(10);
        while(HAL_GPIO_ReadPin(USER_BUTTON_GPIO_Port,USER_BUTTON_Pin) == GPIO_PIN_SET);
    }
}
这段代码会让红色和黄色LED循环亮起熄灭,按下按键后绿色LED会亮起,触发看门狗复位后所有LED都会熄灭,运行效果

6.2CRC测试
CRC(Cyclic Redundancy Check)即循环冗余校验码,是数据通信领域中最常用的一种查错校验码,常用于验证接收到的数据是否完整,例如之前用到的DHTC12在接收到数据后就要用CRC来校验。

STM32H563拥有硬件CRC校验,接下来写个程序,用CRC校验串口发送的数据,并将校验结果用串口返回
打开STM32CubeMX,找到CRC并开启,先用默认的CRC测试一下

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
    uint8_t out[20] = {0},len=0;
    uint32_t crc;
    if(huart->RxEventType == HAL_UART_RXEVENT_IDLE)
    {
        crc = HAL_CRC_Calculate(&hcrc,uartrxbuffer,Size);
        len = sprintf(out,"CRC结果:%08X",crc);
        HAL_UART_Transmit(huart,out,len,100);
        HAL_UARTEx_ReceiveToIdle_IT(huart,uartrxbuffer,UARTRXBUFFERLEN);
    }
}
看看效果

另外还可以使用其它CRC校验公式,换成CRC16的试试

计算结果

6.3HASH测试
HASH算法能将将任意长度的二进制明文映射为较短的二进制串的算法,该过程是不可逆的,并且不同的明文很难映射为相同的HASH值。
STM32H563提供了HASH硬件加速,接下来尝试一下

打开STM32CubeMX,找到HASH并开启

仍然通过串口输入数据,将HASH结果返回

void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
    uint8_t sha256[32];
    if(huart->RxEventType == HAL_UART_RXEVENT_IDLE)
    {
        HAL_HASH_Start(&hhash,uartrxbuffer,Size,sha256,1000);
        HAL_UART_Transmit(huart,sha256,32,100);
        HAL_UARTEx_ReceiveToIdle_IT(huart,uartrxbuffer,UARTRXBUFFERLEN);
    }
}
计算结果

使用特权

评论回复
沙发
y1n9an| | 2024-1-12 16:38 | 只看该作者
HASH是硬件的么?

使用特权

评论回复
板凳
suw12q| | 2024-1-12 16:42 | 只看该作者
CRC其实用模拟的方式也是可以的

使用特权

评论回复
地板
w2nme1ai7| | 2024-1-12 17:18 | 只看该作者
这种CRC是不是和模拟CRC得出的结果可能会不一样?

使用特权

评论回复
5
su1yirg| | 2024-1-12 17:32 | 只看该作者
话说,这芯片是不是有程序加密的功能?用的是啥模块

使用特权

评论回复
6
p0gon9y| | 2024-1-12 19:36 | 只看该作者
学习了,看门狗这么配置就可以了

使用特权

评论回复
7
tax2r6c| | 2024-1-12 20:17 | 只看该作者
这种配置是不是和其他ST的MCU利用cubemx配置是类似的啊

使用特权

评论回复
8
q1d0mnx| | 2024-1-13 07:33 | 只看该作者
没玩过HASH,这一般都应用在哪儿?

使用特权

评论回复
9
lamanius| | 2024-1-13 08:14 | 只看该作者
之前用过CRC,我是用在数据完整性校验方面会用到这个

使用特权

评论回复
10
kaif2n9j| | 2024-1-13 09:30 | 只看该作者
感觉楼主玩cubemx真的很熟练啊,是看啥教程的吗?

使用特权

评论回复
11
l1uyn9b| | 2024-1-13 11:00 | 只看该作者
哈希感觉很好玩的样子,这是不是硬件哈希就生成的速度很快啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

149

主题

708

帖子

7

粉丝