标题:
示波器stm32程序
[打印本页]
作者:
陆风
时间:
2017-8-24 11:33
标题:
示波器stm32程序
希望大家多多支持,分享资料,共同学习
所有资料51hei提供下载:
OSC.rar
(255.14 KB, 下载次数: 56)
2017-8-24 15:25 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序如下:
#include "stm32f10x.h"
#include "systick.h"
#include "lcd.h"
#include "adc.h"
#include "stm32f10x_it.h"
#include "timer.h"
u16 j = 0;
float temp;
float temp1;
void nvic_init(void);
void rcc_init(void);
void gpio_init(void);
void clear_point(u16 hang)
{
u8 index_clear_lie = 0;
POINT_COLOR = DARKBLUE;
for(index_clear_lie = 0;index_clear_lie <201;index_clear_lie++)
{
lcd_huadian(hang,index_clear_lie);
}
POINT_COLOR=RED;
}
int main(void)
{
SystemInit(); //系统时钟初始化
nvic_init(); // 中断优先级配置
rcc_init(); //外设时钟配置
gpio_init(); //外设io口配置
set_io0();
key_init();
systick_init(); //滴答配置,
adc_init(); //adc配置
LCD_Init(); //tft液晶初始化
set_background(); //初始化背景
time_init(); //定时器配置,测频率用的二个定时器
time_enable(); //同步开始计数
get_value();
vpp = get_vpp();
while(1)
{
for(j=ind;j<ind+250;j=j+1)
{
temp = a[j] * 3300 / 4096 * 25 /vcc_div;
temp1 = a[j + 1] * 3300 / 4096 * 25 / vcc_div;
clear_point(j-ind);
if(temp>200)
{
temp=200;
}
if(temp<0)
{
temp=0;
}
if(temp1>200)
{
temp1=200;
}
if(temp1<0)
{
temp1=0;
}
lcd_huadian(j-ind,temp);
lcd_huaxian(j-ind,temp,j-ind+1,temp1);
hua_wang();
}
LCD_Show2Num(144,224,vpp,5,16,0);
get_value();
vpp = get_vpp();
}
}
void nvic_init(void)
{
NVIC_InitTypeDef NVIC_InitTypeStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitTypeStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_Init(&NVIC_InitTypeStruct);
NVIC_InitTypeStruct.NVIC_IRQChannel = EXTI15_10_IRQn;
NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 2;
NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitTypeStruct);
NVIC_InitTypeStruct.NVIC_IRQChannel = TIM2_IRQn; //配置中断优先级
NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 2;
NVIC_InitTypeStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitTypeStruct);
NVIC_InitTypeStruct.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitTypeStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitTypeStruct.NVIC_IRQChannelSubPriority = 3;
NVIC_Init(&NVIC_InitTypeStruct);
}
void rcc_init(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);
}
void gpio_init(void)
{
GPIO_InitTypeDef GPIO_InitTypeStruct;
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_2;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; //外部时钟的,用来测频率的,
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_1;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; //adc输入引脚
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; //外部中断的io配置
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; //外部中断的io配置
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_8; //定时器1触发ad转换的输出的那个口
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_3;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; // S3
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_4;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; // S4
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_5;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; // S5
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_6;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; // S6
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
GPIO_InitTypeStruct.GPIO_Pin = GPIO_Pin_7;
GPIO_InitTypeStruct.GPIO_Speed = GPIO_Speed_50MHz; // S7
GPIO_InitTypeStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitTypeStruct);
}
复制代码
作者:
陆风
时间:
2017-8-24 11:33
求顶!
作者:
perfectxiao
时间:
2019-7-11 19:59
有点厉害,六六六
作者:
keke12345
时间:
2019-7-19 18:36
没频率啊
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1