芯片解密stm32单片机的智能血压计程序原理图
芯片解密单片机源程序如下:
- /* Includes ------------------------------------------------------------------*/
- #include "main.h"
- #include "adc.h"
- #include "i2c.h"
- #include "rtc.h"
- #include "tim.h"
- #include "usart.h"
- #include "gpio.h"
- /* Private includes ----------------------------------------------------------*/
- /* USER CODE BEGIN Includes */
- #include "oled.h" // OLED显示屏头文件
- #include "stdio.h" // 标准输入输出头文件
- #include "rtc.h" // 实时时钟头文件
- #include "led.h" // LED控制头文件
- #include "key.h" // 按键控制头文件
- #include "ds18B20.h" // DS18B20温度传感器头文件
- #include "eeprom.h" // EEPROM存储器头文件
- //#include "adc0832.h" // ADC0832模数转换器头文件
- #include "string.h" // 字符串处理头文件
- /* USER CODE END Includes */
- /* Private typedef -----------------------------------------------------------*/
- /* USER CODE BEGIN PTD */
- /* USER CODE END PTD */
- /* Private define ------------------------------------------------------------*/
- /* USER CODE BEGIN PD */
- #define SAMPLE_COUNT 20 // 采样次数,调整此值以改变采样率
- uint8_t screen = 0; // 当前显示的界面:0表示第一个界面,1表示第二个界面,2表示第三个界面
- /* USER CODE END PD */
- /* Private macro -------------------------------------------------------------*/
- /* USER CODE BEGIN PM */
- /* USER CODE END PM */
- /* Private variables ---------------------------------------------------------*/
- /* USER CODE BEGIN PV */
- RTC_DateTypeDef GetData; // 获取日期结构体
- RTC_TimeTypeDef GetTime; // 获取时间结构体
- uint32_t key_Tick; // 按键时间标志
- uint16_t adc_value; // ADC读取值
- uint8_t saveEEPROM = 0; // 保存EEPROM标志
- uint8_t showEEPROM = 0; // 显示EEPROM标志
- uint8_t eepromDisplayed = 0; // 新增变量,用于标记EEPROM值是否已显示
- uint8_t measureInProgress = 0; // 测量进行中的标志
- uint16_t highPressure = 0; // 高压值
- uint16_t lowPressure = 0; // 低压值
- uint16_t adc_values[SAMPLE_COUNT]; // ADC采集的值数组
- /* USER CODE END PV */
- /* Private function prototypes -----------------------------------------------*/
- void SystemClock_Config(void);
- /* USER CODE BEGIN PFP */
- /* USER CODE END PFP */
- /* Private user code ---------------------------------------------------------*/
- /* USER CODE BEGIN 0 */
- void KEY_Process() // 按键功能处理函数
- {
- if (uwTick - key_Tick < 20) return; // 防抖处理,避免误触发
- key_Tick = uwTick; // 记录当前时间
- Key_Read(); // 读取按键状态
- if (Trg & 0x01) // 按键1按下
- {
- HAL_UART_Transmit(&huart3, (uint8_t*)"B", 1, 50); // 通过串口发送字符'B',语音播报:测量中,不要移动和说话
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
- screen = 1; // 切换到第2个界面
- measureInProgress = 1; // 开始测量
- eepromDisplayed = 0; // 重置EEPROM显示标记
- }
- if (Trg & 0x02) // 按键2按下
- {
- screen = 2; // 切换到第3个界面
- HAL_UART_Transmit(&huart3, (uint8_t*)"C", 1, 50);
- showEEPROM = 1; // 设置显示EEPROM标志
- eepromDisplayed = 0; // 重置EEPROM显示标记
- }

芯片解密