feat: update USART1 baud rate and implement IM1281B communication
This commit is contained in:
parent
98463aa9f1
commit
05668ca262
1379
.idea/workspace.xml
generated
1379
.idea/workspace.xml
generated
File diff suppressed because it is too large
Load Diff
19
Core/Inc/IM1281B.h
Normal file
19
Core/Inc/IM1281B.h
Normal file
@ -0,0 +1,19 @@
|
||||
//
|
||||
// Created by Timothy Yin on 2025/3/29.
|
||||
//
|
||||
#ifndef IM1281B_H
|
||||
#define IM1281B_H
|
||||
#include "usart.h"
|
||||
|
||||
extern uint8_t IM_TxBuf[8];
|
||||
extern uint8_t IM_RxBuf[40];
|
||||
extern unsigned char IM_ReadFlag, IM_RecvDone, IM_RecvLen;
|
||||
extern uint32_t IM_Volt, IM_Curr, IM_Power, IM_Energy, IM_PF, IM_CO2;
|
||||
|
||||
unsigned int Calc_CRC(unsigned char crc_buf, unsigned int crc);
|
||||
unsigned int Check_CRC(const unsigned char *buf, unsigned char len);
|
||||
|
||||
void IM_Read(void);
|
||||
void IM_Analyze(void);
|
||||
|
||||
#endif //IM1281B_H
|
@ -31,7 +31,7 @@ extern "C" {
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
#include "IM1281B.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
@ -71,16 +71,12 @@ void Error_Handler(void);
|
||||
#define RC522_CS_GPIO_Port GPIOB
|
||||
#define KEY4_Pin GPIO_PIN_13
|
||||
#define KEY4_GPIO_Port GPIOB
|
||||
#define KEY4_EXTI_IRQn EXTI15_10_IRQn
|
||||
#define KEY3_Pin GPIO_PIN_14
|
||||
#define KEY3_GPIO_Port GPIOB
|
||||
#define KEY3_EXTI_IRQn EXTI15_10_IRQn
|
||||
#define KEY2_Pin GPIO_PIN_15
|
||||
#define KEY2_GPIO_Port GPIOB
|
||||
#define KEY2_EXTI_IRQn EXTI15_10_IRQn
|
||||
#define KEY1_Pin GPIO_PIN_8
|
||||
#define KEY1_GPIO_Port GPIOA
|
||||
#define KEY1_EXTI_IRQn EXTI9_5_IRQn
|
||||
#define RELAY1_Pin GPIO_PIN_7
|
||||
#define RELAY1_GPIO_Port GPIOB
|
||||
#define OLED_SCL_Pin GPIO_PIN_8
|
||||
|
@ -55,10 +55,8 @@ void SVC_Handler(void);
|
||||
void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void EXTI9_5_IRQHandler(void);
|
||||
void USART1_IRQHandler(void);
|
||||
void USART2_IRQHandler(void);
|
||||
void EXTI15_10_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
134
Core/Src/IM1281B.c
Normal file
134
Core/Src/IM1281B.c
Normal file
@ -0,0 +1,134 @@
|
||||
//
|
||||
// Created by Timothy Yin on 2025/3/29.
|
||||
//
|
||||
#include "IM1281B.h"
|
||||
|
||||
uint8_t IM1281B_ID = 0x01;
|
||||
|
||||
uint8_t IM_TxBuf[8] = {0};
|
||||
uint8_t IM_RxBuf[40] = {0};
|
||||
uint8_t IM_ReadFlag = 0;
|
||||
uint8_t IM_RecvDone = 0;
|
||||
uint8_t IM_RecvLen = 0;
|
||||
|
||||
uint32_t IM_Volt = 0;
|
||||
uint32_t IM_Curr = 0;
|
||||
uint32_t IM_Power = 0;
|
||||
uint32_t IM_Energy = 0;
|
||||
uint32_t IM_PF = 0;
|
||||
uint32_t IM_CO2 = 0;
|
||||
|
||||
unsigned int Calc_CRC(const unsigned char crc_buf, unsigned int crc)
|
||||
{
|
||||
crc = crc ^ crc_buf;
|
||||
for (unsigned char i = 0; i < 8; i++)
|
||||
{
|
||||
const unsigned char chk = crc & 1;
|
||||
crc = crc >> 1;
|
||||
crc = crc & 0x7fff;
|
||||
if (chk == 1)
|
||||
crc = crc ^ 0xa001;
|
||||
crc = crc & 0xffff;
|
||||
}
|
||||
return crc;
|
||||
}
|
||||
|
||||
unsigned int Check_CRC(const unsigned char* buf, const unsigned char len)
|
||||
{
|
||||
unsigned int crc = 0xFFFF;
|
||||
for (unsigned int i = 0; i < len; i++)
|
||||
{
|
||||
crc = Calc_CRC(*buf, crc);
|
||||
buf++;
|
||||
}
|
||||
const unsigned char MSB = crc % 256;
|
||||
const unsigned char LSB = crc / 256;
|
||||
crc = (unsigned int)MSB << 8 | LSB;
|
||||
return crc;
|
||||
}
|
||||
|
||||
void IM_Read(void)
|
||||
{
|
||||
if (IM_ReadFlag == 1) // 到时间抄读模块,抄读间隔 1 秒钟(或其他)
|
||||
{
|
||||
union crc_data
|
||||
{
|
||||
unsigned int word16;
|
||||
unsigned char byte[2];
|
||||
} new_crc;
|
||||
IM_ReadFlag = 0;
|
||||
IM_TxBuf[0] = IM1281B_ID; //模块的 ID 号,默认 ID 为 0x01
|
||||
IM_TxBuf[1] = 0x03;
|
||||
IM_TxBuf[2] = 0x00;
|
||||
IM_TxBuf[3] = 0x48;
|
||||
IM_TxBuf[4] = 0x00;
|
||||
IM_TxBuf[5] = 0x06;
|
||||
new_crc.word16 = Check_CRC(IM_TxBuf, 6);
|
||||
IM_TxBuf[6] = new_crc.byte[1]; //CRC 效验低字节在前
|
||||
IM_TxBuf[7] = new_crc.byte[0];
|
||||
|
||||
for (unsigned int i = 0; i < 8; i++)
|
||||
{
|
||||
HAL_UART_Transmit(&huart1, &IM_TxBuf[i], 1, HAL_MAX_DELAY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void IM_Analyze(void)
|
||||
{
|
||||
if (IM_RecvDone == 1) //接收完成
|
||||
{
|
||||
IM_RecvDone = 0;
|
||||
if (IM_RxBuf[0] == IM1281B_ID) //确认 ID 正确
|
||||
{
|
||||
union crc_data
|
||||
{
|
||||
unsigned int word16;
|
||||
unsigned char byte[2];
|
||||
} new_crc;
|
||||
new_crc.word16 = Check_CRC(IM_RxBuf, IM_RecvLen - 2); //IM_RecvLen 是接收数据总长度
|
||||
if (new_crc.byte[0] == IM_RxBuf[IM_RecvLen - 1] && new_crc.byte[1] == IM_RxBuf[IM_RecvLen - 2])
|
||||
{
|
||||
// 01 03 18 00 23 81 d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 e7 00 00 00 00 84 5c
|
||||
IM_Volt =
|
||||
(uint32_t)IM_RxBuf[3] << 24
|
||||
| (uint32_t)IM_RxBuf[4] << 16
|
||||
| (uint32_t)IM_RxBuf[5] << 8
|
||||
| IM_RxBuf[6];
|
||||
IM_Curr =
|
||||
(uint32_t)IM_RxBuf[7] << 24
|
||||
| (uint32_t)IM_RxBuf[8] << 16
|
||||
| (uint32_t)IM_RxBuf[9] << 8
|
||||
| IM_RxBuf[10];
|
||||
IM_Power =
|
||||
(uint32_t)IM_RxBuf[11] << 24
|
||||
| (uint32_t)IM_RxBuf[12] << 16
|
||||
| (uint32_t)IM_RxBuf[13] << 8
|
||||
| IM_RxBuf[14];
|
||||
IM_Energy =
|
||||
(uint32_t)IM_RxBuf[15] << 24
|
||||
| (uint32_t)IM_RxBuf[16] << 16
|
||||
| (uint32_t)IM_RxBuf[17] << 8
|
||||
| IM_RxBuf[18];
|
||||
IM_PF =
|
||||
(uint32_t)IM_RxBuf[19] << 24
|
||||
| (uint32_t)IM_RxBuf[20] << 16
|
||||
| (uint32_t)IM_RxBuf[21] << 8
|
||||
| IM_RxBuf[22];
|
||||
IM_CO2 =
|
||||
(uint32_t)IM_RxBuf[23] << 24
|
||||
| (uint32_t)IM_RxBuf[24] << 16
|
||||
| (uint32_t)IM_RxBuf[25] << 8
|
||||
| IM_RxBuf[26];
|
||||
}
|
||||
else
|
||||
{
|
||||
IM_Volt = 199;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
IM_Volt = 99;
|
||||
}
|
||||
}
|
||||
}
|
@ -5,7 +5,6 @@
|
||||
#include "onenet.h"
|
||||
#include "mqttkit.h"
|
||||
#include "stm32f1xx_hal_gpio.h"
|
||||
// #include "main.h"
|
||||
|
||||
#define PRODUCT_ID "zzS53oqy5l"
|
||||
#define DEVICE_ID "ESP_67EAF3"
|
||||
@ -61,7 +60,6 @@ _Bool OneNet_DevLink(void)
|
||||
// break;
|
||||
// case 5: printf("WARN: 连接失败:非法链接(比如token非法)\r\n");
|
||||
// break;
|
||||
//
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -84,7 +82,19 @@ unsigned char OneNet_FillBuf(char* buf)
|
||||
strcpy(buf, "{\"id\":\"1743082944\",\"params\":{");
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
sprintf(text, "\"volt\":{\"value\":%f},", 218.3);
|
||||
sprintf(text, "\"volt\":{\"value\":%.2f},", IM_Volt * 0.0001);
|
||||
strcat(buf, text);
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
sprintf(text, "\"current\":{\"value\":%.2f},", IM_Curr * 0.0001);
|
||||
strcat(buf, text);
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
sprintf(text, "\"watt_P\":{\"value\":%.2f},", IM_Power * 0.0001);
|
||||
strcat(buf, text);
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
sprintf(text, "\"energy\":{\"value\":%.3f},", IM_Energy * 0.0001);
|
||||
strcat(buf, text);
|
||||
|
||||
memset(text, 0, sizeof(text));
|
||||
@ -111,7 +121,7 @@ void OneNet_SendData(void)
|
||||
{
|
||||
MQTT_PACKET_STRUCTURE mqttPacket = {NULL, 0, 0, 0}; //协议包
|
||||
|
||||
char buf[128];
|
||||
char buf[256];
|
||||
|
||||
short body_len = 0, i = 0;
|
||||
memset(buf, 0, sizeof(buf)); //清空数组内容
|
||||
|
@ -85,13 +85,13 @@ void MX_GPIO_Init(void)
|
||||
|
||||
/*Configure GPIO pins : KEY4_Pin KEY3_Pin KEY2_Pin */
|
||||
GPIO_InitStruct.Pin = KEY4_Pin|KEY3_Pin|KEY2_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : KEY1_Pin */
|
||||
GPIO_InitStruct.Pin = KEY1_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_PULLUP;
|
||||
HAL_GPIO_Init(KEY1_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
@ -102,13 +102,6 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(RELAY1_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/* EXTI interrupt init*/
|
||||
HAL_NVIC_SetPriority(EXTI9_5_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
|
||||
|
||||
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 0, 0);
|
||||
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
237
Core/Src/main.c
237
Core/Src/main.c
@ -26,6 +26,7 @@
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "retarget.h"
|
||||
#include "oled.h"
|
||||
@ -41,7 +42,10 @@
|
||||
|
||||
/* Private define ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN PD */
|
||||
|
||||
#define K1 HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin)
|
||||
#define K2 HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin)
|
||||
#define K3 HAL_GPIO_ReadPin(KEY3_GPIO_Port, KEY3_Pin)
|
||||
#define K4 HAL_GPIO_ReadPin(KEY4_GPIO_Port, KEY4_Pin)
|
||||
/* USER CODE END PD */
|
||||
|
||||
/* Private macro -------------------------------------------------------------*/
|
||||
@ -55,6 +59,7 @@
|
||||
extern unsigned short esp8266_cnt;
|
||||
extern unsigned char esp8266_buf[128];
|
||||
uint8_t* dataPtr;
|
||||
uint8_t* UART1_RxData[40];
|
||||
uint8_t UART2_RxData;
|
||||
|
||||
uint8_t rf_status;
|
||||
@ -77,7 +82,68 @@ void SystemClock_Config(void);
|
||||
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN 0 */
|
||||
void KeyScan(void)
|
||||
{
|
||||
if (K1 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_Delay(5);
|
||||
if (K1 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
}
|
||||
while (K1 == GPIO_PIN_RESET);
|
||||
}
|
||||
if (K2 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_Delay(5);
|
||||
if (K2 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
}
|
||||
while (K2 == GPIO_PIN_RESET);
|
||||
}
|
||||
if (K3 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_Delay(5);
|
||||
if (K3 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
}
|
||||
while (K3 == GPIO_PIN_RESET);
|
||||
}
|
||||
if (K4 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_Delay(5);
|
||||
if (K4 == GPIO_PIN_RESET)
|
||||
{
|
||||
HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
}
|
||||
while (K4 == GPIO_PIN_RESET);
|
||||
}
|
||||
}
|
||||
|
||||
void Display_IM1281B(void)
|
||||
{
|
||||
OLED_ShowString(0, 0, "Volt:", 12);
|
||||
OLED_ShowString(0, 2, "Curr:", 12);
|
||||
OLED_ShowString(0, 4, "Pwr: ", 12);
|
||||
OLED_ShowString(0, 6, "Eng: ", 12);
|
||||
|
||||
char buffer[16];
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%.2fV", IM_Volt * 0.0001);
|
||||
OLED_ShowString(40, 0, buffer, 12);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%.2fA", IM_Curr * 0.0001);
|
||||
OLED_ShowString(40, 2, buffer, 12);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%.2fW", IM_Power * 0.0001);
|
||||
OLED_ShowString(40, 4, buffer, 12);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%.3fKWh", IM_Energy * 0.0001);
|
||||
OLED_ShowString(40, 6, buffer, 12);
|
||||
|
||||
}
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/**
|
||||
@ -124,7 +190,9 @@ int main(void)
|
||||
|
||||
OLED_ShowString(0,0,"initializing...",12);
|
||||
|
||||
HAL_UART_Receive_IT(&huart2, (uint8_t *) &UART2_RxData, 1);
|
||||
HAL_UARTEx_ReceiveToIdle_IT(&huart1, UART1_RxData, 40);
|
||||
HAL_UART_Receive_IT(&huart2, &UART2_RxData, 1);
|
||||
|
||||
ESP8266_Init();
|
||||
while (OneNet_DevLink()) {}
|
||||
OneNET_Subscribe();
|
||||
@ -141,6 +209,7 @@ int main(void)
|
||||
/* USER CODE BEGIN WHILE */
|
||||
while (1)
|
||||
{
|
||||
KeyScan();
|
||||
// if (!OneNet_DevLink())
|
||||
// {
|
||||
// OLED_ShowString(0,0,"OneNet online ",12);
|
||||
@ -154,88 +223,62 @@ int main(void)
|
||||
// OLED_ShowString(0,0,"OneNet offline ",12);
|
||||
// HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
|
||||
// }
|
||||
|
||||
IM_ReadFlag = 1; //抄读标志
|
||||
IM_Read();
|
||||
|
||||
HAL_Delay(500);
|
||||
|
||||
OneNet_SendData();
|
||||
HAL_Delay(1000);
|
||||
ESP8266_Clear();
|
||||
|
||||
dataPtr = ESP8266_GetIPD(0);
|
||||
if (dataPtr != NULL)
|
||||
{
|
||||
OneNet_RevPro(dataPtr);
|
||||
}
|
||||
Display_IM1281B();
|
||||
|
||||
rf_status = PCD_Request(PICC_REQALL, rf_card_type);
|
||||
// dataPtr = ESP8266_GetIPD(0);
|
||||
// if (dataPtr != NULL)
|
||||
// {
|
||||
// OneNet_RevPro(dataPtr);
|
||||
// }
|
||||
|
||||
if (!rf_status) {
|
||||
rf_status = PCD_ERR;
|
||||
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
|
||||
rf_status = PCD_AntiColl(rf_card_id);
|
||||
}
|
||||
|
||||
if (!rf_status) {
|
||||
rf_status = PCD_ERR;
|
||||
// printf(SEP);
|
||||
// printf("[i] Card Type: %02X %02X %02X\r\n", rf_card_type[0], rf_card_type[1], rf_card_type[2]);
|
||||
// printf("[i] Card ID : %02X-%02X-%02X-%02X\r\n", rf_card_id[0], rf_card_id[1], rf_card_id[2], rf_card_id[3]);
|
||||
|
||||
OLED_ShowString(0, 2, "Typ:", 12);
|
||||
uint8_t card_type_buffer[9];
|
||||
snprintf(card_type_buffer, sizeof card_type_buffer, "%02X %02X %02X", rf_card_type[0], rf_card_type[1], rf_card_type[2]);
|
||||
OLED_ShowString(38, 2, card_type_buffer, 12);
|
||||
|
||||
OLED_ShowString(0, 4, "ID :", 12);
|
||||
uint8_t card_id_buffer[12];
|
||||
snprintf(card_id_buffer, sizeof card_id_buffer, "%02X-%02X-%02X-%02X", rf_card_id[0], rf_card_id[1], rf_card_id[2], rf_card_id[3]);
|
||||
OLED_ShowString(36, 4, card_id_buffer, 12);
|
||||
|
||||
rf_status = PCD_Select(rf_card_id);
|
||||
}
|
||||
|
||||
if (!rf_status) {
|
||||
rf_status = PCD_ERR;
|
||||
|
||||
rf_status = PCD_AuthState(PICC_AUTHENT1A, ADDR, KEY_A, rf_card_id);
|
||||
// if(rf_status == PCD_OK)
|
||||
// {
|
||||
// printf("[*] Key A pass\r\n");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// printf("[!] Key A verification failed\r\n");
|
||||
// }
|
||||
|
||||
rf_status = PCD_AuthState(PICC_AUTHENT1B, ADDR, KEY_B, rf_card_id);
|
||||
// if(rf_status == PCD_OK)
|
||||
// {
|
||||
// printf("[*] Key B pass\r\n");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// printf("[!] Key B verification failed\r\n");
|
||||
// }
|
||||
}
|
||||
|
||||
if(rf_status == PCD_OK)
|
||||
{
|
||||
rf_status = PCD_ERR;
|
||||
rf_status = PCD_ReadBlock(ADDR, rf_data);
|
||||
|
||||
// if(rf_status == PCD_OK)
|
||||
// {
|
||||
// printf("[+] Data in sector %d block %d: ", ADDR/4, ADDR%4);
|
||||
// for(int i = 0; i < 16; i++)
|
||||
// {
|
||||
// printf("%02x", rf_data[i]);
|
||||
// }
|
||||
// printf("\r\n");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// printf("Read card failed\r\n");
|
||||
// }
|
||||
HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
|
||||
HAL_Delay(3000);
|
||||
}
|
||||
// rf_status = PCD_Request(PICC_REQALL, rf_card_type);
|
||||
//
|
||||
// if (!rf_status) {
|
||||
// rf_status = PCD_ERR;
|
||||
// HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
|
||||
// rf_status = PCD_AntiColl(rf_card_id);
|
||||
// }
|
||||
//
|
||||
// if (!rf_status) {
|
||||
// rf_status = PCD_ERR;
|
||||
//
|
||||
// OLED_ShowString(0, 2, "Typ:", 12);
|
||||
// uint8_t card_type_buffer[9];
|
||||
// snprintf(card_type_buffer, sizeof card_type_buffer, "%02X %02X %02X", rf_card_type[0], rf_card_type[1], rf_card_type[2]);
|
||||
// OLED_ShowString(38, 2, card_type_buffer, 12);
|
||||
//
|
||||
// OLED_ShowString(0, 4, "ID :", 12);
|
||||
// uint8_t card_id_buffer[12];
|
||||
// snprintf(card_id_buffer, sizeof card_id_buffer, "%02X-%02X-%02X-%02X", rf_card_id[0], rf_card_id[1], rf_card_id[2], rf_card_id[3]);
|
||||
// OLED_ShowString(36, 4, card_id_buffer, 12);
|
||||
//
|
||||
// rf_status = PCD_Select(rf_card_id);
|
||||
// }
|
||||
//
|
||||
// if (!rf_status) {
|
||||
// rf_status = PCD_ERR;
|
||||
// rf_status = PCD_AuthState(PICC_AUTHENT1A, ADDR, KEY_A, rf_card_id);
|
||||
// rf_status = PCD_AuthState(PICC_AUTHENT1B, ADDR, KEY_B, rf_card_id);
|
||||
// }
|
||||
//
|
||||
// if(rf_status == PCD_OK)
|
||||
// {
|
||||
// rf_status = PCD_ERR;
|
||||
// rf_status = PCD_ReadBlock(ADDR, rf_data);
|
||||
//
|
||||
// HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
|
||||
// HAL_Delay(3000);
|
||||
// }
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
@ -283,19 +326,37 @@ void SystemClock_Config(void)
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 4 */
|
||||
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
// void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
// {
|
||||
// if(GPIO_Pin == KEY1_Pin || GPIO_Pin == KEY2_Pin || GPIO_Pin == KEY3_Pin || GPIO_Pin == KEY4_Pin)
|
||||
// {
|
||||
// HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
// if(HAL_GPIO_ReadPin(RELAY1_GPIO_Port, RELAY1_Pin) == GPIO_PIN_RESET)
|
||||
// {
|
||||
// OLED_ShowString(0, 6, "Relay1: ON ", 12);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// OLED_ShowString(0, 6, "Relay1: OFF", 12);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
{
|
||||
if(GPIO_Pin == KEY1_Pin || GPIO_Pin == KEY2_Pin || GPIO_Pin == KEY3_Pin || GPIO_Pin == KEY4_Pin)
|
||||
if (huart == &huart1)
|
||||
{
|
||||
HAL_GPIO_TogglePin(RELAY1_GPIO_Port, RELAY1_Pin);
|
||||
if(HAL_GPIO_ReadPin(RELAY1_GPIO_Port, RELAY1_Pin) == GPIO_PIN_RESET)
|
||||
// assign the received data to the IM_RxBuf
|
||||
if (Size >= sizeof(UART1_RxData))
|
||||
{
|
||||
OLED_ShowString(0, 6, "Relay1: ON ", 12);
|
||||
}
|
||||
else
|
||||
{
|
||||
OLED_ShowString(0, 6, "Relay1: OFF", 12);
|
||||
Size = sizeof(UART1_RxData) - 1;
|
||||
}
|
||||
// IM_RecvLen = Size;
|
||||
memcpy(IM_RxBuf, UART1_RxData, Size);
|
||||
IM_RecvLen = Size;
|
||||
IM_RecvDone = 1;
|
||||
IM_Analyze();
|
||||
HAL_UARTEx_ReceiveToIdle_IT(&huart1, UART1_RxData, 40);
|
||||
}
|
||||
}
|
||||
|
||||
@ -324,6 +385,8 @@ void Error_Handler(void)
|
||||
__disable_irq();
|
||||
while (1)
|
||||
{
|
||||
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin);
|
||||
HAL_Delay(200);
|
||||
}
|
||||
/* USER CODE END Error_Handler_Debug */
|
||||
}
|
||||
|
@ -199,20 +199,6 @@ void SysTick_Handler(void)
|
||||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[9:5] interrupts.
|
||||
*/
|
||||
void EXTI9_5_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(KEY1_Pin);
|
||||
/* USER CODE BEGIN EXTI9_5_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI9_5_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles USART1 global interrupt.
|
||||
*/
|
||||
@ -241,22 +227,6 @@ void USART2_IRQHandler(void)
|
||||
/* USER CODE END USART2_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles EXTI line[15:10] interrupts.
|
||||
*/
|
||||
void EXTI15_10_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN EXTI15_10_IRQn 0 */
|
||||
|
||||
/* USER CODE END EXTI15_10_IRQn 0 */
|
||||
HAL_GPIO_EXTI_IRQHandler(KEY4_Pin);
|
||||
HAL_GPIO_EXTI_IRQHandler(KEY3_Pin);
|
||||
HAL_GPIO_EXTI_IRQHandler(KEY2_Pin);
|
||||
/* USER CODE BEGIN EXTI15_10_IRQn 1 */
|
||||
|
||||
/* USER CODE END EXTI15_10_IRQn 1 */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
@ -40,7 +40,7 @@ void MX_USART1_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART1_Init 1 */
|
||||
huart1.Instance = USART1;
|
||||
huart1.Init.BaudRate = 115200;
|
||||
huart1.Init.BaudRate = 4800;
|
||||
huart1.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart1.Init.StopBits = UART_STOPBITS_1;
|
||||
huart1.Init.Parity = UART_PARITY_NONE;
|
||||
|
@ -47,8 +47,6 @@ MxCube.Version=6.14.0
|
||||
MxDb.Version=DB.6.0.140
|
||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.EXTI15_10_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||
NVIC.EXTI9_5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
|
||||
NVIC.ForceEnableDMAVector=true
|
||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
|
||||
@ -86,36 +84,32 @@ PA7.GPIOParameters=GPIO_Label
|
||||
PA7.GPIO_Label=RC522_MOSI
|
||||
PA7.Mode=Full_Duplex_Master
|
||||
PA7.Signal=SPI1_MOSI
|
||||
PA8.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||
PA8.GPIOParameters=GPIO_PuPd,GPIO_Label
|
||||
PA8.GPIO_Label=KEY1
|
||||
PA8.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||
PA8.GPIO_PuPd=GPIO_PULLUP
|
||||
PA8.Locked=true
|
||||
PA8.Signal=GPXTI8
|
||||
PA8.Signal=GPIO_Input
|
||||
PA9.Mode=Asynchronous
|
||||
PA9.Signal=USART1_TX
|
||||
PB0.GPIOParameters=GPIO_Label
|
||||
PB0.GPIO_Label=RC522_CS
|
||||
PB0.Locked=true
|
||||
PB0.Signal=GPIO_Output
|
||||
PB13.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||
PB13.GPIOParameters=GPIO_PuPd,GPIO_Label
|
||||
PB13.GPIO_Label=KEY4
|
||||
PB13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||
PB13.GPIO_PuPd=GPIO_PULLUP
|
||||
PB13.Locked=true
|
||||
PB13.Signal=GPXTI13
|
||||
PB14.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||
PB13.Signal=GPIO_Input
|
||||
PB14.GPIOParameters=GPIO_PuPd,GPIO_Label
|
||||
PB14.GPIO_Label=KEY3
|
||||
PB14.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||
PB14.GPIO_PuPd=GPIO_PULLUP
|
||||
PB14.Locked=true
|
||||
PB14.Signal=GPXTI14
|
||||
PB15.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
|
||||
PB14.Signal=GPIO_Input
|
||||
PB15.GPIOParameters=GPIO_PuPd,GPIO_Label
|
||||
PB15.GPIO_Label=KEY2
|
||||
PB15.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
|
||||
PB15.GPIO_PuPd=GPIO_PULLUP
|
||||
PB15.Locked=true
|
||||
PB15.Signal=GPXTI15
|
||||
PB15.Signal=GPIO_Input
|
||||
PB7.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label
|
||||
PB7.GPIO_Label=RELAY1
|
||||
PB7.GPIO_PuPd=GPIO_PULLUP
|
||||
@ -195,21 +189,14 @@ RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||
RCC.TimSysFreq_Value=72000000
|
||||
RCC.USBFreq_Value=72000000
|
||||
RCC.VCOOutput2Freq_Value=8000000
|
||||
SH.GPXTI13.0=GPIO_EXTI13
|
||||
SH.GPXTI13.ConfNb=1
|
||||
SH.GPXTI14.0=GPIO_EXTI14
|
||||
SH.GPXTI14.ConfNb=1
|
||||
SH.GPXTI15.0=GPIO_EXTI15
|
||||
SH.GPXTI15.ConfNb=1
|
||||
SH.GPXTI8.0=GPIO_EXTI8
|
||||
SH.GPXTI8.ConfNb=1
|
||||
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4
|
||||
SPI1.CalculateBaudRate=18.0 MBits/s
|
||||
SPI1.Direction=SPI_DIRECTION_2LINES
|
||||
SPI1.IPParameters=VirtualType,Mode,Direction,BaudRatePrescaler,CalculateBaudRate
|
||||
SPI1.Mode=SPI_MODE_MASTER
|
||||
SPI1.VirtualType=VM_MASTER
|
||||
USART1.IPParameters=VirtualMode
|
||||
USART1.BaudRate=4800
|
||||
USART1.IPParameters=VirtualMode,BaudRate
|
||||
USART1.VirtualMode=VM_ASYNC
|
||||
USART2.IPParameters=VirtualMode
|
||||
USART2.VirtualMode=VM_ASYNC
|
||||
|
Loading…
Reference in New Issue
Block a user