2025-08-13 16:43:29 +08:00
|
|
|
|
/*
|
|
|
|
|
|
*Copyright ,2023 , NANOCHAP
|
|
|
|
|
|
*File name: MIAN.C
|
|
|
|
|
|
*Author:
|
|
|
|
|
|
*Version: V1.0
|
2025-08-20 11:03:53 +08:00
|
|
|
|
*Date: 2023-11-
|
|
|
|
|
|
*Description: <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD>ۺϲ<EFBFBD><EFBFBD>ԣ<EFBFBD>TIMER0 + <EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD>
|
2025-08-13 16:43:29 +08:00
|
|
|
|
*Function List:
|
|
|
|
|
|
|
|
|
|
|
|
History:
|
|
|
|
|
|
1.V1.0
|
|
|
|
|
|
Date:
|
|
|
|
|
|
Author:
|
|
|
|
|
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
#include "my_header.h"
|
|
|
|
|
|
#include "ENS1_MTP.h"
|
|
|
|
|
|
#include "ENS1_CLOCK.h"
|
|
|
|
|
|
#include "ENS1_UART.h"
|
|
|
|
|
|
#include "ENS1_TIMER.h"
|
|
|
|
|
|
#include "ENS1_GPIO.h"
|
2025-08-20 11:03:53 +08:00
|
|
|
|
#include "ENS1_WAVEGEN.h"
|
|
|
|
|
|
|
2025-08-13 16:43:29 +08:00
|
|
|
|
int main(){
|
2025-08-20 11:03:53 +08:00
|
|
|
|
// <20><>ʼ<EFBFBD><CABC>ϵͳ
|
2025-08-13 16:43:29 +08:00
|
|
|
|
MTP_init();
|
|
|
|
|
|
ClockInit();
|
2025-08-20 11:03:53 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC>GPIO19<31><39><EFBFBD>ڶ<EFBFBD>ʱ<EFBFBD><CAB1>ָʾ
|
2025-08-13 16:43:29 +08:00
|
|
|
|
GPIO_IO_Init(GPIO_19, OUTPUT, 0x00, 0x02, 0x00, 0x00, ENABLE);
|
|
|
|
|
|
GPIO_Output(GPIO_19, LOW_LEVEL);
|
2025-08-20 11:03:53 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC>UART
|
2025-08-13 16:43:29 +08:00
|
|
|
|
UART_Init(CMSDK_UART1, &UART1_Init);
|
|
|
|
|
|
UART_ITConfig(CMSDK_UART1, &UART1_ITSet);
|
2025-08-20 11:03:53 +08:00
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>wavegen_Init֮ǰ<D6AE><C7B0>
|
|
|
|
|
|
TIMER0_Init(1);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
Time_Manager_Init();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
|
// printf("APB_Clock_Freq: %d Hz\n", APB_Clock_Freq);
|
|
|
|
|
|
// printf("TIMER0<52><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD>
|
|
|
|
|
|
wavegen_Init();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>õ<EFBFBD><C3B5>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
EMS_Config_TypeDef ems_config = {
|
|
|
|
|
|
.frequency = 100, // 100Hz
|
|
|
|
|
|
.duration = 1000, // 1000ms
|
|
|
|
|
|
.intensity = 128, // <20>е<EFBFBD>ǿ<EFBFBD><C7BF>
|
|
|
|
|
|
.rest_time = 100, // 100ms<6D><73>Ϣʱ<CFA2><CAB1>
|
|
|
|
|
|
.silent_time = 50 // 50ms<6D><73>Ĭʱ<C4AC><CAB1>
|
|
|
|
|
|
};
|
|
|
|
|
|
EMS_Configure(&ems_config);
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>
|
|
|
|
|
|
EMS_Start();
|
|
|
|
|
|
|
|
|
|
|
|
// printf("========================================\n");
|
|
|
|
|
|
// printf("<22><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC>ۺϲ<DBBA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
|
// printf("========================================\n");
|
|
|
|
|
|
// printf("GPIO19: <20><>ʱ<EFBFBD><CAB1>ָʾ<D6B8><CABE>1<EFBFBD>뷭ת<EBB7AD><D7AA>\n");
|
|
|
|
|
|
// printf("<22><><EFBFBD>̼<EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF>128<32><38>\n");
|
|
|
|
|
|
// printf("ϵͳʱ<CDB3><CAB1>: 32MHz HSI\n");
|
|
|
|
|
|
// printf("<22><>ѹ<EFBFBD><D1B9>ѹ: 26V\n");
|
|
|
|
|
|
// printf("UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: 115200\n");
|
|
|
|
|
|
// printf("========================================\n");
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>main<69><6E><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD>壩
|
|
|
|
|
|
static uint8_t ems_control_count = 0; // <20><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
static uint8_t ems_state = 0; // <20><><EFBFBD>̼<EFBFBD>״̬<D7B4><CCAC>0=<3D>رգ<D8B1>1=<3D><><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
2025-08-13 16:43:29 +08:00
|
|
|
|
while(1)
|
|
|
|
|
|
{
|
2025-08-20 11:03:53 +08:00
|
|
|
|
// <20><>ȡʱ<C8A1><CAB1><EFBFBD><EFBFBD>־λ
|
|
|
|
|
|
Time_Flag_TypeDef* time_flags = Time_Manager_GetFlags();
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>
|
|
|
|
|
|
// ע<>⣺<EFBFBD><E2A3BA><EFBFBD>ﲻ<EFBFBD><EFB2BB>ֱ<EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>EMS_Process()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>־λִ<CEBB>в<EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (time_flags->T_2ms) {
|
|
|
|
|
|
// 2ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
time_flags->T_2ms = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (time_flags->T_10ms) {
|
|
|
|
|
|
// 10ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
time_flags->T_10ms = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (time_flags->T_100ms) {
|
|
|
|
|
|
// 100ms<6D><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
time_flags->T_100ms = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (time_flags->T_1s) {
|
|
|
|
|
|
// 1s<31><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
|
|
|
|
|
|
ems_control_count++; // ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Էŵ<D4B7><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
if (ems_control_count <= 10) {
|
|
|
|
|
|
// ǰ10<31>룺<EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>
|
|
|
|
|
|
if (ems_state == 0) {
|
|
|
|
|
|
ems_state = 1;
|
|
|
|
|
|
EMS_Start(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>
|
|
|
|
|
|
// printf("<22><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD> - <20><>%d<><64>\n", ems_control_count);
|
|
|
|
|
|
}
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>
|
|
|
|
|
|
EMS_Process();
|
|
|
|
|
|
} else if (ems_control_count <= 20) {
|
|
|
|
|
|
// <20><>10<31>룺<EFBFBD>رյ<D8B1><D5B5>̼<EFBFBD>
|
|
|
|
|
|
if (ems_state == 1) {
|
|
|
|
|
|
ems_state = 0;
|
|
|
|
|
|
EMS_Stop(); // ֹͣ<CDA3><D6B9><EFBFBD>̼<EFBFBD>
|
|
|
|
|
|
// printf("<22><><EFBFBD>̼<EFBFBD><CCBC>ر<EFBFBD> - <20><>%d<><64>\n", ems_control_count);
|
|
|
|
|
|
}
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
ems_control_count = 0;
|
|
|
|
|
|
// printf("<22><><EFBFBD>̼<EFBFBD><CCBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n");
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
GPIO_Overturn(GPIO_19); // GPIO19<31><39>ת
|
|
|
|
|
|
// printf("1s<31><73>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4> - ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̼<EFBFBD>״̬: %s\n",
|
|
|
|
|
|
// ems_state ? "<22><><EFBFBD><EFBFBD>" : "<22>ر<EFBFBD>");
|
|
|
|
|
|
time_flags->T_1s = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// <20><>ʱ<EFBFBD><CAB1><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD> TIMER0_Handler() <20><>
|
2025-08-13 16:43:29 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|