初级会员

- 积分
- 71
- 金钱
- 71
- 注册时间
- 2015-5-3
- 在线时间
- 1 小时
|
5金钱
最近在研究STM32的74HC595数码管显示,在51上写可以,但是移植到STM32就显示不出来,
void h595_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);//使能GPIO时钟
GPIO_InitStructure.GPIO_Pin = DS;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度为2MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;////通用推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = SCK;//|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度为50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;////通用推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = RCK;//|GPIO_Pin_3|GPIO_Pin_5|GPIO_Pin_1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;//最大输出速度为50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;////通用推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_ResetBits(GPIOD, DS);
GPIO_ResetBits(GPIOD, SCK);
GPIO_ResetBits(GPIOD, RCK);
}
void Delay2(u32 nCount)
{
for(; nCount != 0; nCount--);
}
void WR1_595(unsigned char segdata) //输入一字节数码管数据进595
{
unsigned char i,num;
num=segdata;
for(i=0;i<8;i++)
{
/* SCK=0;
delay_ms(5);
if((num&0x01)==0x01)
DS=1;
else
DS=0;
SCK=1;
num=num>>1;
delay_ms(5);
*/
GPIO_ResetBits(GPIOD, SCK);
if((num&0x01)==0x01)
GPIO_SetBits(GPIOD, DS);
else
GPIO_ResetBits(GPIOD, DS);
GPIO_SetBits(GPIOD,SCK);
num=num>>1;
}
}
void WR2_595(unsigned char wei) //输入一字节数码管数据进595
{
unsigned char i,num;
num=wei;
for(i=0;i<8;i++)
{
/* SCK=0;
//delay_ms(5);
if((num&0x01)==0x01)
DS=1;
else
DS=0;
SCK=1;
num=num>>1;
delay_ms(5);
*/
GPIO_ResetBits(GPIOD, SCK);
if((num&0x01)==0x01)
GPIO_SetBits(GPIOD, DS);
else
GPIO_ResetBits(GPIOD, DS);
GPIO_SetBits(GPIOD,SCK);
num=num>>1;
}
}
void OUT_595(void) //上升沿将数据送到输出锁存器
{
/* RCK=0;
delay_ms(5);
RCK=1;
delay_ms(5);
RCK=0;
*/
GPIO_ResetBits(GPIOD, RCK);
GPIO_SetBits(GPIOD,RCK);
GPIO_ResetBits(GPIOD, RCK);
}
|
|