中级会员
 
- 积分
- 456
- 金钱
- 456
- 注册时间
- 2021-9-6
- 在线时间
- 59 小时
|
1金钱
主程序:
u16 adcx;
float temp;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
uart1_init(9600); //´®¿Ú³õʼ»¯Îª9600
Adc_Init();
LCD_Init();
LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú
DIR_Init(); //µç»úIO¿Ú³õʼ»¯
TIM4_PWM_Init(9999,35); //¶¨Ê±Æ÷³õʼ»¯
TIM_SetCompare1(TIM4,4999); //ÉèÖÃÕ¼¿Õ±ÈΪ50%
SineWave_GPIO_Config(); //sin²¨³õʼ»¯io
SineWave_TIM_Config(); //³õʼ»¯¶¨Ê±Æ÷
SineWave_DAC_Config(); //ÅäÖÃDAC
SineWave_DMA_Config(); //ÅäÖÃDMA
sine_wave(SINE_WAVE_DATA_MAX); //sin²¨ÐÎÅäÖÃ
POINT_COLOR=RED;//ÉèÖÃ×ÖÌåΪºìÉ«
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"ADC TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2014/3/9"); //ÏÔʾÌáʾÐÅÏ¢
POINT_COLOR=BLUE;//ÉèÖÃ×ÖÌåΪÀ¶É«
LCD_ShowString(60,130,200,16,16,"ADC_CH1_VAL:");
LCD_ShowString(60,150,200,16,16,"ADC_CH1_VOL:0.000V");
while(1)
{
adcx=Get_Adc_Average(ADC_Channel_7,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//ÏÔʾADCµÄÖµ
temp=(float)adcx*(3.3/4096);
adcx=temp;
LCD_ShowxNum(156,150,adcx,1,16,0);//ÏÔʾµçѹֵ.
printf("%f",temp);
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
LED0=!LED0;
delay_ms(250);
if(t==900) //¹Ø±Õsin²¨ÐÎÊä³ö
{
TIM_Cmd(TIM2, DISABLE);
}
步进电机程序:
#include "timer.h"
#include "led.h"
#include "usart.h"
int t=0;
//DIR¡ª¡ª B5³õʼ»¯
void DIR_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
//TIM4³õʼ»¯
void TIM4_PWM_Init(u16 arr,u16 psc)
{
//½á¹¹Ìå
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
//ʹÄÜʱÖÓ
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//ÉèÖøÃÒý½ÅΪ¸´ÓÃÊä³ö¹¦ÄÜ,Êä³öTIM4 CH1µÄ WMÂö³å²¨ÐÎ GPIOB.6
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //¸´ÓÃÍÆÍìÊä³ö
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//ÉèÖö¨Ê±Æ÷²ÎÊý
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
//ÖжÏÉèÖÃ
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE );
NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//³õʼ»¯TIM4 Channel1
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC1Init(TIM4, &TIM_OCInitStructure);
TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
TIM_Cmd(TIM4, ENABLE); //ʹÄÜTIM4
}
//¶¨Ê±Æ÷4ÖжϷþÎñ³ÌÐò
void TIM4_IRQHandler(void)
{
if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) //¼ì²éÖ¸¶¨µÄTIMÖжϷ¢ÉúÓë·ñ:TIM ÖжÏÔ´
{
TIM_ClearITPendingBit(TIM4, TIM_IT_Update ); //Çå³ýTIMxµÄÖжϴý´¦Àíλ:TIM ÖжÏÔ´
LED1 = !LED1;
t++;
if(t==450)
{
DIR = !DIR;
}
if(t==900)
{
TIM_Cmd(TIM4, DISABLE);
}
}
}
adc程序用的就是例程里的
|
|