#include <stm32f10x_lib.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <RTL.h>
#include "serial//serial.h"
#include "timer//timer.h"
#include "init//stm32_init.h"
///////////include contol file/////
#include "control//control_main.h" /* Model's header file */
#include "control//rtwtypes.h"
///////////////////////////////////////
#define PINB GPIOB->IDR
#define True 1
#define False 0
#define Chanel_Port PINB
#define Led_Port GPIOB->ODR
#define Led_Pin 12
//=======================================================================================================
int i;
int ch=48;
char temp_main[80];
char usart_buffer[50];
int usart_buffer_index=0;
unsigned int M1,M2,M3,M4;
float n1[10]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9};
float n2[10]={0,0.01,0.02,0.03,0.04,0.05,0.06,0.07,0.08,0.09};
float n3[10]={0,0.001,0.002,0.003,0.004,0.005,0.006,0.007,0.008,0.009};
float n4[10]={0,0.0001,0.0002,0.0003,0.0004,0.0005,0.0006,0.0007,0.0008,0.0009};
//=======================================================================================================
char usart3_buff[40];
char index3;
char Flag_Rec=False;
//================================
struct D_Sensor_Tilt{
float T_x;
float T_y;
float Compass;
} Data_Sensor_Tilt;
//=====================================
struct D_Sensor_Gyro{
float G_x;
float G_y;
float G_z;
} Data_Sensor_Gyro;
//=====================================
struct D_Stick{
unsigned int THRO;
unsigned int AILE;
unsigned int ELEV;
unsigned int RUDD;
unsigned int GEAR;
unsigned int AUX1;
unsigned int AUX2;
} Data_Stick;
//=======================================
struct D_Naza{
unsigned int M1;
unsigned int M2;
unsigned int M3;
unsigned int M4;
} Data_Naza;
//====================================
void Set_Speed_M1(unsigned int *Speed){
if(*Speed >5500) *Speed=5500;
TIM2->CCR1=*Speed+3201;
//TIM2->CCR1=*Speed;
}
void Set_Speed_M2(unsigned int *Speed){
if(*Speed >5500) *Speed=5500;
TIM2->CCR2=*Speed+3201;
//TIM2->CCR2=*Speed;
}
void Set_Speed_T1(unsigned int *Pos){
if(*Pos >5500) *Pos=5500;
TIM2->CCR3=*Pos+3201+131;
//TIM2->CCR3=*Pos;
}
void Set_Speed_T2(unsigned int *Pos){
if(*Pos >5500) *Pos=5500;
TIM2->CCR4=*Pos+3201;
//TIM2->CCR4=*Pos;
}
void delay_ms(int Delay){
unsigned long int i=0,j=0;
while(i++<Delay){
for(j=0;j<9000;j++);
}
}
void delay_us(int Delay){
unsigned long int i=0,j=0;
while(i++<Delay){
for(j=0;j<9;j++);
}
}
void EXTI4_IRQHandler(){
EXTI->PR=1<<4; //reset interrupt
// send_string("i");
// TIM3->CNT=0;
TIM4->CNT=0;
}
void EXTI3_IRQHandler(){
EXTI->PR=1<<3; //reset interrupt
// send_string("i");
TIM3->CNT=0;
// TIM4->CNT=0;
}
void USART1_IRQHandler(){
//char k;
//unsigned int f1=0,f2=0,f3=0,f4=0;
//k=getkey();
//sendchar3(k);
/*;
if(k==13){usart_buffer_index=0;
send_string("result=");
send_string(usart_buffer);
send_string("\n");
sscanf(usart_buffer,"%d %d %d %d",&f1,&f2,&f3,&f4);
Set_Speed_M1(&f1);
Set_Speed_M2(&f2);
Set_Speed_T1(&f3);
Set_Speed_T2(&f4);
}
usart_buffer[usart_buffer_index++]=k;
usart_buffer[usart_buffer_index]=0;
*/
}
void USART3_IRQHandler() {
char ch;
ch = getkey3();
// sendchar(ch);
usart3_buff[index3++] = ch;
usart3_buff[index3] = 0;
if(ch=='\n'){
index3 = 0;
Flag_Rec=TRUE;
}
}
//=======================pin configuration for out pwm and input capture ================================================
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/*GPIOA Configuration: TIM3 channel 1 and 2 as alternate function push-pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1| GPIO_Pin_2| GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
//===========================================================
void Get_Stick(struct D_Stick *DD_Stick){
DD_Stick->THRO=(TIM_GetCapture1(TIM4)/8)-93;
DD_Stick->AILE=(TIM_GetCapture2(TIM4)/8)-93;
DD_Stick->ELEV=(TIM_GetCapture3(TIM4)/8)-94;
DD_Stick->RUDD=(TIM_GetCapture4(TIM4)/8)-94;
// if (TIM_GetCapture1(TIM3)>27000){
// DD_Stick->THRO=((TIM_GetCapture1(TIM4)-28000)/6);
// DD_Stick->AILE=((TIM_GetCapture2(TIM4)-28000)/6);
// DD_Stick->ELEV=((TIM_GetCapture3(TIM4)-28000)/6);
// DD_Stick->RUDD=((TIM_GetCapture4(TIM4)-28000)/6);
// }
//DD_Stick->GEAR=(TIM_GetCapture1(TIM4));
// DD_Stick->AUX1=TIM_GetCapture2(TIM4);
//DD_Stick->AUX2=TIM_GetCapture3(TIM4);
}
void Get_Naza(struct D_Naza *DD_Naza){
DD_Naza->M1=(TIM_GetCapture1(TIM3));
DD_Naza->M2=TIM_GetCapture2(TIM3);
DD_Naza->M3=TIM_GetCapture3(TIM3);
DD_Naza->M4=TIM_GetCapture4(TIM3);
}
//=======================================================================================================
void Get_Sensor_Tilt(struct D_Sensor_Tilt *DT_Sensor){
unsigned char count_compass=0;
unsigned char count_x=0;
unsigned char count_y=0;
unsigned char Count_Read=0;
char buf_compass[10];
char buf_x[10];
char buf_y[10];
index3=0;
sendchar3(':');
sendchar3('1');
sendchar3('\n');
while(Flag_Rec!=TRUE);
// index3=0;
Flag_Rec=FALSE;
while(usart3_buff[Count_Read]!=',')
buf_x[count_x++]=usart3_buff[Count_Read++];
Count_Read++;
while(usart3_buff[Count_Read]!=',')
buf_compass[count_compass++]=usart3_buff[Count_Read++];
Count_Read++;
while(usart3_buff[Count_Read]!='\n')
buf_y[count_y++]=usart3_buff[Count_Read++];
///////////////////////
if(buf_compass[0]!='-'){
DT_Sensor->Compass=(buf_compass[0]-48)+n1[buf_compass[2]-48]+n2[buf_compass[3]-48]+n3[buf_compass[4]-48]+n4[buf_compass[5]-48];
}
else {
DT_Sensor->Compass=(buf_compass[1]-48)+n1[buf_compass[3]-48]+n2[buf_compass[4]-48]+n3[buf_compass[5]-48]+n4[buf_compass[6]-48];
DT_Sensor->Compass*=-1;
}
////////////////////////////////////
if(buf_x[0]!='-'){
DT_Sensor->T_x=(buf_x[0]-48)+n1[buf_x[2]-48]+n2[buf_x[3]-48]+n3[buf_x[4]-48]+n4[buf_x[5]-48];
}
else {
DT_Sensor->T_x=(buf_x[1]-48)+n1[buf_x[3]-48]+n2[buf_x[4]-48]+n3[buf_x[5]-48]+n4[buf_x[6]-48];
DT_Sensor->T_x*=-1;
}
////////////////////////////////////////////
if(buf_y[0]!='-'){
DT_Sensor->T_y=(buf_y[0]-48)+n1[buf_y[2]-48]+n2[buf_y[3]-48]+n3[buf_y[4]-48]+n4[buf_y[5]-48];
}
else {
DT_Sensor->T_y=(buf_y[1]-48)+n1[buf_y[3]-48]+n2[buf_y[4]-48]+n3[buf_y[5]-48]+n4[buf_y[6]-48];
DT_Sensor->T_y*=-1;
}
}
void Get_Sensor_Gyro(struct D_Sensor_Gyro *DG_Sensor){
unsigned char count_z=0;
unsigned char count_x=0;
unsigned char count_y=0;
unsigned char Count_Read=0;
char buf_z[10];
char buf_x[10];
char buf_y[10];
index3=0;
sendchar3(':');
sendchar3('3');
sendchar3('3');
sendchar3('\n');
while(Flag_Rec!=TRUE);
// index3=0;
Flag_Rec=FALSE;
while(usart3_buff[Count_Read]!=',')
buf_x[count_x++]=usart3_buff[Count_Read++];
buf_x[count_x]=0;
Count_Read++;
while(usart3_buff[Count_Read]!=',')
buf_z[count_z++]=usart3_buff[Count_Read++];
buf_z[count_z]=0;
Count_Read++;
while(usart3_buff[Count_
timer_stm32.zip_Capture_movementziz_stm32 timer_timer
版权申诉
18 浏览量
2022-09-22
14:35:50
上传
评论
收藏 746KB ZIP 举报
weixin_42651887
- 粉丝: 77
- 资源: 1万+
最新资源
- 多元预测模型在混沌时间序列上的应用.zip
- 多个测序Seq格式序列文件转fasta格式并汇总为一个文件,方便序列比对分析.zip
- 此项目是对时间序列分析内容的梳理,包括时间序列中的数据分析以及常用模型等 项目整体以实战为主.zip
- 尝试用于分析基于时间序列的日志分析.zip
- 本工具箱是一个基于MATLAB自带的Deep Learning Toolbox开发的LSTM深度学习预测时间序列的工具箱.zip
- python时间序列分析.zip
- C结构体与 JSON 快速互转库,快速实现C结构体的序列化及反序列化.zip
- Apache IoTDB 是针对时间序列数据收集、存储与分析一体化的数据管理引擎 它具有体量轻、性能高、易使用的特点.zip
- 2020年时间序列分析课程个人报告的代码.zip
- LabVIEW:引领测控自动化的图形化编程利器.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈