摘要: 1 目标功能及方案 1.1 FLASH的1页的擦除时间约为10-20ms,写一个字节的时间约几十us, 当应用程序是每1ms都要执行一个循环周期时,如果在保存数据换页时要擦除FLASH,显然会阻塞程序的执行,所以在应用程序有严格的实时性要求时,eeprom_emulate保存数据的方案显然不合适。 阅读全文
posted @ 2023-10-24 15:58 okyihu 阅读(896) 评论(0) 推荐(0) 编辑
摘要: 1 简介 1.1 SPI和UART一样是一种串行数据收发硬件协议,不同点是SPI是在时钟线SCK的同步作用下对数据移进移除,UART是靠双方的波特率(1bit所占的时间)来确定。 1.2 HAL库对两者在收发总线的错误处理都一样,都提供了用于收发错误处理的回调函数 hspi->ErrorCallba 阅读全文
posted @ 2023-10-23 15:58 okyihu 阅读(517) 评论(0) 推荐(0) 编辑
摘要: 1 目的: stm32 官方提供flash模拟eeprom的代码例子,为了能给产品添加数据保存功能,可以改造该例子迅速完成数据保存的功能。示例代码路径: C:\Users\rd-yhzhang\STM32Cube\Repository\STM32Cube_FW_F1_V1.8.5\Projects\ 阅读全文
posted @ 2023-10-20 16:10 okyihu 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 1 目的: A 很多产品中都要使用蜂鸣器模块,有的产品中蜂鸣器只需要做为按键音,提示用户有按键按下,有的产品中蜂鸣器做为告警声,不同的警告有不同的蜂鸣音。 B 虽然蜂鸣器直接用MCU的GPIO控制即可,置IO高或低,蜂鸣器就会鸣叫或关闭,但是在有的产品中,它的控制却并不简单。例如:出现A告警以滴滴2 阅读全文
posted @ 2023-10-14 17:06 okyihu 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1 STM32 实时时钟RTC原理: A 外部晶振采用32.768KHz的原因,因为2的15次方2^15=32768, 所以32.768KHz分频15次后刚好是1Hz,1S就是1Hz。 B RTC模块有一个实时计数器Real Time Counter,它对震荡源脉冲计数,每个脉冲计数器加1,所以不能 阅读全文
posted @ 2023-10-14 16:27 okyihu 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 1 目的: 定时器的编码器模式可以通过硬件的方式来读取编码器的旋转方向和脉冲数,而不需要软件开销。 2 使用示例: __HAL_TIM_IS_TIM_COUNTING_DOWN(&htim2):返回 0 或 1 ,代表转动方向 __HAL_TIM_GET_COUNTER(&htim2):返回计数脉冲 阅读全文
posted @ 2023-10-14 16:27 okyihu 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 1 代码: crc_lib.h /* Define to prevent recursive inclusion */ #ifndef __crc_lib_H #define __crc_lib_H #ifdef __cplusplus extern "C" { #endif /* Includes 阅读全文
posted @ 2023-10-14 16:26 okyihu 阅读(15) 评论(0) 推荐(0) 编辑