LED.C代码
#include "stm32f10x.h"
#include "LED.h"
#include "delay.h"
void led_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启PB引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //开启PC引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE); //开启PD引脚的时钟
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //推挽式输出
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIOC->ODR |= (0xff << 8);
GPIOD->ODR |= (0x1 << 2); //打开LE锁存器
GPIOD->ODR &= ~(0x1 << 2); //关闭LE锁存器
Wei1_0;Wei2_0;Wei3_0;Wei4_0;
//Wei5_0;
Wei6_0;Wei7_0;Wei8_0;
}
void PutDatPort0()
{
Duan0_0;Duan1_0;Duan2_0;Duan3_0;Duan4_0;Duan5_0;Duan6_0;Duan7_0;
}
void PutDatPort1()
{
Duan0_1;Duan1_1;Duan2_1;Duan3_1;Duan4_1;Duan5_1;Duan6_1;Duan7_1;
}
void ClearAll()
{
PutDatPort1();
Delay_ms(1);Wei1_0;
Delay_ms(1);Wei1_1;
Delay_ms(1);Wei2_0;
Delay_ms(1);Wei2_1;
Delay_ms(1);Wei3_0;
Delay_ms(1);Wei3_1;
Delay_ms(1);Wei4_0;
Delay_ms(1);Wei4_1;
// Delay_ms(1);Wei5_1;
// Delay_ms(1);Wei5_0;
Delay_ms(1);Wei6_1;
Delay_ms(1);Wei6_0;
Delay_ms(1);Wei7_1;
Delay_ms(1);Wei7_0;
Delay_ms(1);Wei8_1;
Delay_ms(1);Wei8_0;
}
void OpenAll()
{
PutDatPort0();
Delay_ms(1);Wei1_1;
Delay_ms(1);Wei1_0;
Delay_ms(1);Wei2_1;
Delay_ms(1);Wei2_0;
Delay_ms(1);Wei3_1;
Delay_ms(1);Wei3_0;
Delay_ms(1);Wei4_1;
Delay_ms(1);Wei4_0;
// Delay_ms(1);Wei5_1;
// Delay_ms(1);Wei5_0;
Delay_ms(1);Wei6_1;
Delay_ms(1);Wei6_0;
Delay_ms(1);Wei7_1;
Delay_ms(1);Wei7_0;
Delay_ms(1);Wei8_1;
Delay_ms(1);Wei8_0;
}
//void GreenLED1(u8 mod)
//{
// ClearAll();
// if(mod==1){
// PutDatPort0();
// Delay_ms(1);Wei5_1;
// Delay_ms(1);Wei5_0;
// GPIOD->ODR &= ~(0x1 << 2);
// Delay_ms(1);Wei6_1;
// Delay_ms(1);Wei6_0;
// GPIOD->ODR &= ~(0x1 << 2);
// }
// else {
// PutDatPort1();
// Delay_ms(1);Wei5_1;
// Delay_ms(1);Wei6_1;
// GPIOD->ODR &= ~(0x1 << 2);
// Delay_ms(1);Wei5_0;
// Delay_ms(1);Wei6_1;
// Delay_ms(1); PutDatPort1();
// }
//}
//void RedLED1(u8 mod)
//{
// ClearAll();
// if(mod==1){
// PutDatPort0();
// Delay_ms(1);Wei7_1;
// Delay_ms(1);Wei7_0;
// GPIOD->ODR &= ~(0x1 << 2);
// Delay_ms(1);Wei8_1;
// Delay_ms(1);Wei8_0;
// }
// else {
// PutDatPort1();
// Delay_ms(1);Wei7_1;
// Delay_ms(1);Wei7_0;
//GPIOD->ODR &= ~(0x1 << 2);
// Delay_ms(1);Wei8_1;
// Delay_ms(1);Wei8_0;
// }
//}
void SendDat(u8 dat)
{
if((dat&0x01)!=0){Duan0_1;}
else {Duan0_0;}
if((dat&0x02)!=0){Duan1_1;}
else {Duan1_0;}
if((dat&0x04)!=0){Duan2_1;}
else {Duan2_0;}
if((dat&0x08)!=0){Duan3_1;}
else {Duan3_0;}
if((dat&0x10)!=0){Duan4_1;}
else {Duan4_0;}
if((dat&0x20)!=0){Duan5_1;}
else {Duan5_0;}
if((dat&0x40)!=0){Duan6_1;}
else {Duan6_0;}
if((dat&0x80)!=0){Duan7_1;}
else {Duan7_0;}
Delay_ms(1);
}
void ChooseWei(u8 num)
{
switch(num){
//case 1 :Delay_ms(1);Wei5_1; Delay_ms(5);Wei5_0;Delay_ms(1);break; //选中绿灯1-8
case 2 :Delay_ms(1);Wei6_1; Delay_ms(5);Wei6_0;Delay_ms(1);break;
case 3 :Delay_ms(1);Wei7_1; Delay_ms(5);Wei7_0;Delay_ms(1);break;
case 4 :Delay_ms(1);Wei8_1; Delay_ms(5);Wei8_0;Delay_ms(1);break;
case 5 :Delay_ms(1);Wei1_1; Delay_ms(5);Wei1_0;Delay_ms(1);break; //选中第一位数码管
case 6 :Delay_ms(1);Wei2_1; Delay_ms(5);Wei2_0;Delay_ms(1);break;
case 7 :Delay_ms(1);Wei3_1; Delay_ms(5);Wei3_0;Delay_ms(1);break;
case 8 :Delay_ms(1);Wei4_1; Delay_ms(5);Wei4_0;Delay_ms(1);break;
default : break;
}
}
|