generated from Template/H563ZI-HAL-CMake-Template
加入Buzzer,Shake_Motor,Ultrasound
This commit is contained in:
11
fun/Buzzer.c
Normal file
11
fun/Buzzer.c
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "Buzzer.h"
|
||||
|
||||
void Buzzer_Open(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(Buzzer_GPIO_Port,Buzzer_Pin,GPIO_PIN_SET); // <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
void Buzzer_Close(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(Buzzer_GPIO_Port,Buzzer_Pin,GPIO_PIN_RESET); // <20>͵<EFBFBD>ƽ<EFBFBD>ر<EFBFBD>
|
||||
}
|
||||
9
fun/Buzzer.h
Normal file
9
fun/Buzzer.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef __BUZZER_H__
|
||||
#define __BUZZER_H__
|
||||
|
||||
#include "headfile.h"
|
||||
|
||||
void Buzzer_Open(void);
|
||||
void Buzzer_Close(void);
|
||||
|
||||
#endif
|
||||
14
fun/HCBle.c
14
fun/HCBle.c
@@ -134,6 +134,20 @@ void HCBle_ExtractAndParseFrame(void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef task
|
||||
// BLE<4C><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void ble_rx_task_entry(ULONG thread_input)
|
||||
{
|
||||
HCBle_InitDMAReception();
|
||||
|
||||
while(1)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define RING_BUFFER_SIZE 256
|
||||
#define UART_DMA_RX_BUF_SIZE 64
|
||||
|
||||
#define task 1
|
||||
// HCBle <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD><DDB6><EFBFBD>
|
||||
typedef struct
|
||||
{
|
||||
@@ -34,6 +35,7 @@ typedef struct
|
||||
extern uint8_t rx_data;
|
||||
extern RingBuffer ble_rx_ring; //<2F><>ʼ<EFBFBD><CABC>
|
||||
extern uint8_t uart_dma_rx_buf[UART_DMA_RX_BUF_SIZE];
|
||||
extern LocationData current_location;
|
||||
|
||||
void HCBle_InitDMAReception(void);
|
||||
void HCBle_ExtractAndParseFrame(void);
|
||||
|
||||
11
fun/Shake_Motor.c
Normal file
11
fun/Shake_Motor.c
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "Shake_Motor.h"
|
||||
|
||||
void Shake_Motor_Open(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(Shake_Motor_GPIO_Port,Shake_Motor_Pin,GPIO_PIN_SET); // <20>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
void Shake_Motor_Close(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(Shake_Motor_GPIO_Port,Shake_Motor_Pin,GPIO_PIN_RESET); // <20>͵<EFBFBD>ƽ<EFBFBD>ر<EFBFBD>
|
||||
}
|
||||
8
fun/Shake_Motor.h
Normal file
8
fun/Shake_Motor.h
Normal file
@@ -0,0 +1,8 @@
|
||||
#ifndef __SHAKE_MOTOR_H
|
||||
#define __SHAKE_MOTOR_H
|
||||
|
||||
#include "headfile.h"
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
111
fun/Ultrasound.c
Normal file
111
fun/Ultrasound.c
Normal file
@@ -0,0 +1,111 @@
|
||||
#include "Ultrasound.h"
|
||||
TX_THREAD ultrasonic_task_handle;
|
||||
TX_EVENT_FLAGS_GROUP ultrasonic_event;
|
||||
|
||||
|
||||
extern TIM_HandleTypeDef htim2;
|
||||
|
||||
volatile uint32_t ic_val1 = 0; // <20><><EFBFBD><EFBFBD>ֵ1
|
||||
volatile uint32_t ic_val2 = 0; // <20><><EFBFBD><EFBFBD>ֵ2
|
||||
volatile uint8_t is_first_capture = 0; // <20>Ƿ<EFBFBD>Ϊ<EFBFBD><CEAA>һ<EFBFBD>β<EFBFBD><CEB2><EFBFBD>
|
||||
volatile uint32_t distance_cm = 0; // <20><><EFBFBD>밴<EFBFBD><EBB0B4> cm<63><6D><EFBFBD><EFBFBD>
|
||||
|
||||
/*******
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Psc: 250 - 1 <20>Դﵽ 1tick = 1us<75><73>Ч<EFBFBD><D0A7>
|
||||
*******/
|
||||
|
||||
/****
|
||||
|
||||
DWT<EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD> <20><>ȷ<EFBFBD><C8B7>
|
||||
|
||||
<EFBFBD>ŵ<EFBFBD>main.c<>н<EFBFBD><D0BD>г<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
****/
|
||||
void DWT_Init(void)
|
||||
{
|
||||
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
|
||||
DWT->CYCCNT = (uint32_t)0u; //<2F>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/********
|
||||
delay_us() <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> (ʹ<><CAB9>DWT) <20><>ȷ<EFBFBD><C8B7>
|
||||
*********/
|
||||
void delay_us(uint32_t us)
|
||||
{
|
||||
uint32_t start = DWT->CYCCNT;
|
||||
uint32_t ticks = us * (SystemCoreClock / 1000000U); // us * 64
|
||||
while((DWT->CYCCNT - start) < ticks);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/******
|
||||
Trig <20><><EFBFBD><EFBFBD>
|
||||
|
||||
You only need to supply a short 10uS
|
||||
pulse to the trigger input to start the ranging
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Trig Ϊ<>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD> HAL_GPIO_WritePin(..., RESET); HAL_Delay(); <20><>һ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
******/
|
||||
void HCSR04_Trigger(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(HC_Trig_GPIO_Port,HC_Trig_Pin,GPIO_PIN_RESET);
|
||||
delay_us(2); //<2F><><EFBFBD><EFBFBD>2~5us
|
||||
HAL_GPIO_WritePin(HC_Trig_GPIO_Port,HC_Trig_Pin,GPIO_PIN_SET);
|
||||
delay_us(10); // <20><><EFBFBD>ָߵ<D6B8>ƽ10us
|
||||
HAL_GPIO_WritePin(HC_Trig_GPIO_Port,HC_Trig_Pin,GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
|
||||
#ifdef HCSR_TEST
|
||||
void ultrasonic_task_entry(ULONG thread_input) {
|
||||
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
|
||||
|
||||
while (1) {
|
||||
HCSR04_Trigger();
|
||||
|
||||
ULONG actual_flags;
|
||||
if (tx_event_flags_get(&ultrasonic_event, EVENT_ECHO_DONE, TX_OR_CLEAR,
|
||||
&actual_flags, TX_WAIT_FOREVER) == TX_SUCCESS) {
|
||||
if (distance_cm < 30) {
|
||||
// ִ<>б<EFBFBD><D0B1>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>
|
||||
}
|
||||
}
|
||||
|
||||
tx_thread_sleep(50); // ÿ<>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 50 ticks
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
/*******
|
||||
Echo <20><><EFBFBD>벶<EFBFBD><EBB2B6><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
******/
|
||||
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
|
||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) {
|
||||
if (is_first_capture == 0) {
|
||||
ic_val1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
|
||||
__HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_FALLING);
|
||||
is_first_capture = 1;
|
||||
} else {
|
||||
ic_val2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
|
||||
__HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_RISING);
|
||||
is_first_capture = 0;
|
||||
|
||||
uint32_t delta = (ic_val2 > ic_val1) ? (ic_val2 - ic_val1) : (0xFFFF - ic_val1 + ic_val2);
|
||||
distance_cm = delta / 58;
|
||||
|
||||
// ֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD>
|
||||
// tx_event_flags_set(&ultrasonic_event, EVENT_ECHO_DONE, TX_OR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
25
fun/Ultrasound.h
Normal file
25
fun/Ultrasound.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#ifndef __ULTRASOUND_H
|
||||
#define __ULTRASOUND_H
|
||||
|
||||
#include "headfile.h"
|
||||
|
||||
#define HCSR_TEST 1
|
||||
#define EVENT_ECHO_DONE 0x01
|
||||
|
||||
|
||||
void DWT_Init(void);
|
||||
/********
|
||||
delay_us() <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> (ʹ<><CAB9>DWT) <20><>ȷ<EFBFBD><C8B7>
|
||||
*********/
|
||||
void delay_us(uint32_t us);
|
||||
|
||||
/******
|
||||
Trig <20><><EFBFBD><EFBFBD>
|
||||
|
||||
You only need to supply a short 10uS
|
||||
pulse to the trigger input to start the ranging
|
||||
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Trig Ϊ<>ߵ<EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD> HAL_GPIO_WritePin(..., RESET); HAL_Delay(); <20><>һ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
******/
|
||||
void HCSR04_Trigger(void);
|
||||
#endif
|
||||
@@ -6,6 +6,8 @@
|
||||
#include "usart.h"
|
||||
#include "gpio.h"
|
||||
#include "gpdma.h"
|
||||
#include "tim.h"
|
||||
#include "app_threadx.h"
|
||||
|
||||
#include "stdio.h"
|
||||
#include "stdlib.h"
|
||||
@@ -14,5 +16,8 @@
|
||||
|
||||
#include "HCBle.h"
|
||||
#include "gps.h"
|
||||
#include "Shake_Motor.h"
|
||||
#include "Ultrasound.h"
|
||||
#include "Buzzer.h"
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user