标题:
电赛源码资料:STM32风力摆
[打印本页]
作者:
talerrr
时间:
2018-1-15 14:12
标题:
电赛源码资料:STM32风力摆
风力摆代码,直接用
单片机源程序如下:
/*!
* COPYRIGHT NOTICE
* Copyright (c) 2013,山外科技
* All rights reserved.
* 除注明出处外,以下所有内容版权均属山外科技所有,未经允许,不得用于商业用途,
* 修改内容时必须保留山外科技的版权声明。
*
* @file main.c
* @brief 山外KL26 平台主程序
* @author 山外科技
* @version v5.2
* @date 2014-10-26
*/
#include "common.h"
#include "include.h"
#define MOTOR_HZ (20*1000)
#define XOUT ADC0_SE9
#define YOUT ADC0_SE13
#define ZOUT ADC0_SE15
#define Gyro1 ADC0_SE14
#define Gyro2 ADC0_SE12
#define Ang ADC0_SE11
Site_t site_lcd;
uint16 x,y,z,gyro1,gyro2,ang; //保存ADC转换结果
//子函数声明
void LCD_show_int();//LCD显示字符
void PIT_IRQHandler(void);//中断函数
void move();//移动
void main()
{
//陀螺仪初始化
adc_init(XOUT);
adc_init(YOUT);
adc_init(ZOUT);
adc_init(Gyro2); //角加速度 Angular2
adc_init(Gyro1); //角加速度 Angular1
adc_init(Ang);
//LCD初始化
LCD_init();
LCD_show_int();
//初始化 电机 PWM
tpm_pwm_init(TPM0, TPM_CH0,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH1,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH4,MOTOR_HZ,100);
tpm_pwm_init(TPM0, TPM_CH5,MOTOR_HZ,100);
gpio_init(PTC12,GPO,0);
/********************************开PIT中断******************************/
pit_init_ms(PIT0, 10); //初始化PIT0,定时时间为: ??ms
set_vector_handler(PIT_VECTORn ,PIT_IRQHandler); //设置PIT0的中断服务函数为 PIT_IRQHandler
enable_irq (PIT_IRQn); //使能PIT0中断
while(1)
{
site_lcd.x = 24;
site_lcd.y = 2;
x = adc_once(XOUT,ADC_8bit);
LCD_num_C (site_lcd, x , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
y = adc_once(YOUT,ADC_8bit);
LCD_num_C (site_lcd, y , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
z = adc_once(ZOUT,ADC_8bit);
LCD_num_C (site_lcd, z , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
gyro1 = adc_once(Gyro1,ADC_8bit);
LCD_num_C (site_lcd, gyro1 , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
gyro2 = adc_once(Gyro2,ADC_8bit);
LCD_num_C (site_lcd, gyro2 , FCOLOUR , BCOLOUR);
site_lcd.y += 15;
ang = adc_once(Ang,ADC_8bit);
LCD_num_C (site_lcd, ang , FCOLOUR , BCOLOUR);
}
}
/******************************LCD初始化****************************/
void LCD_show_int()
{
LCD_init();
site_lcd.x = 0;
site_lcd.y = 2;
LCD_str(site_lcd, "X", BLUE, GREEN);
site_lcd.y = 17;
LCD_str(site_lcd, "Y", BLUE, GREEN);
site_lcd.y = 32;
LCD_str(site_lcd, "Z", BLUE, GREEN);
site_lcd.y = 47;
LCD_str(site_lcd, "G1", BLUE, GREEN);
site_lcd.y = 62;
LCD_str(site_lcd, "G2", BLUE, GREEN);
site_lcd.y = 77;
LCD_str(site_lcd, "A", BLUE, GREEN);
site_lcd.y = 92;
LCD_str(site_lcd, "k", BLUE, GREEN);
site_lcd.y = 107;
LCD_str(site_lcd, "dp", BLUE, GREEN);
site_lcd.x=68;
site_lcd.y = 2;
LCD_str(site_lcd, "wp", BLUE, GREEN);//位置PD
site_lcd.y = 17;
LCD_str(site_lcd, "wd", BLUE, GREEN);
site_lcd.y = 32;
LCD_str(site_lcd, "zl", BLUE, GREEN);//速度
site_lcd.y = 47;
LCD_str(site_lcd, "sp", BLUE, GREEN);
site_lcd.y = 62;
LCD_str(site_lcd, "h1", BLUE, GREEN);//环岛
site_lcd.y = 77;
LCD_str(site_lcd, "h2", BLUE, GREEN);
site_lcd.y = 92;
LCD_str(site_lcd, "h3", BLUE, GREEN);
site_lcd.y = 107;
LCD_str(site_lcd, "D", BLUE, GREEN);
}
void PIT_IRQHandler(void)
{
//PIT0 和 PIT1 共用相同中断号,所以两者都共用相同中断函数,需要根据标志位来判断是由哪个PIT触发中断
if(PIT_TFLG(PIT0) == 1 ) //判断是否 PIT0 进入中断
{
move();
PIT_Flag_Clear(PIT0); //清中断标志位
}
}
void move()
{
tpm_pwm_duty(TPM0, TPM_CH0,70);
tpm_pwm_duty(TPM0, TPM_CH1,70);
tpm_pwm_duty(TPM0, TPM_CH4,70);
tpm_pwm_duty(TPM0, TPM_CH5,70);
}
复制代码
所有资料51hei提供下载:
风力摆.rar
(854.08 KB, 下载次数: 37)
2018-1-15 17:55 上传
点击文件名下载附件
风力摆代码
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1