2015-11-19 11:48 AM
hi all membres i do a program that affiche the angle of a steeper motor in the screen of stm32f429 discovery but i can only affiche [0,45,90,135,180,225,270,315]
( 8 steppes ) and i want it work on 36 steppes or 32steppes what can i do to get 36 steppes or 32 steppes ????void
initlcd(
void
)
{ LCD_Init();
LCD_LayerInit();
/* Set LCD background layer */
LCD_SetLayer(LCD_BACKGROUND_LAYER);
/* Set LCD transparency */
LCD_SetTransparency(0);
/* Set LCD foreground layer */
LCD_SetLayer(LCD_FOREGROUND_LAYER);
/* LTDC reload configuration */
LTDC_ReloadConfig(LTDC_IMReload);
/* Enable the LTDC */
LTDC_Cmd(ENABLE);
LCD_Clear(LCD_COLOR_BLACK);
}
void
Sleep(unsigned
long
int
n) {
/* boucle vide parcourue (n * 100000) fois*/
int
i = 0;
unsigned
long
int
max = n * 100000;
do
{
/* Faire qqch de stupide qui prend du temps */
i++;
}
while
(i <= max);
}
void
CONFIGPINE(
void
)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOC clock enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
/* GPIOA Configuration */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
// Input/Output controlled by peripheral
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
// Button to ground expectation
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
void
step_angle(
int
step)
{
if
(step==0)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
}
if
(step==1)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
}
if
(step==2)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
}
if
(step==3)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
}
if
(step==4)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
}
if
(step==5)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
}
if
(step==6)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_RESET);
}
if
(step==7)
{
GPIO_WriteBit(GPIOE, GPIO_Pin_2, Bit_SET);
GPIO_WriteBit(GPIOE, GPIO_Pin_3, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_4, Bit_RESET);
GPIO_WriteBit(GPIOE, GPIO_Pin_5, Bit_SET);
}
if
(step==8)
{
step=-1;
}
}
void
direction ()
{
int
i=0;
char
ch[100];
initlcd();
while
(i!=9)
{
step_angle(i);
sprintf(ch,
''angle=%d ''
, (i*45) );
LCD_SetTextColor(LCD_COLOR_GREEN);
LCD_SetBackColor(LCD_COLOR_BLUE);
LCD_DisplayStringLine(LINE(9),ch);
Sleep(2000);
i++;
}
}
int
main(
void
)
{
CONFIGPINE();
while
(1)
{
direction ();
}
}