中级会员
 
- 积分
- 243
- 金钱
- 243
- 注册时间
- 2019-12-16
- 在线时间
- 42 小时
|
1金钱
keil v5
管脚PA1-DS PA2-SCK PA3-RCK
实现对74HC595的输出控制
结果,灯全亮,也不闪,好像STM啥都不干活,测试时确实STM32对应管脚有正常电压到达595
#include <stm32f10x.h>
#include "stm32f10x.h"
#define MOSIO GPIO_Pin_1
#define R_CLK GPIO_Pin_2
#define S_CLK GPIO_Pin_3
//测试控制595
uint8_t stat[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
void NOP(void)
{
uint16_t i;
for (i = 0; i < 20; i++);
}
void Delay(uint32_t nCount)
{
for (; nCount != 0; nCount--);
}
void HC595SendData(uint8_t SendVal)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
if (((SendVal << i) & 0x80) != 0 ) GPIO_SetBits(GPIOA, MOSIO);
else GPIO_ResetBits(GPIOA, MOSIO);
GPIO_ResetBits(GPIOA, S_CLK);
NOP();
GPIO_SetBits(GPIOA, S_CLK);
}
GPIO_ResetBits(GPIOA, R_CLK);
NOP();
GPIO_SetBits(GPIOA, R_CLK);
}
int main()
{
SystemInit(); //配置系统时钟为72M
uint8_t i = 0x00;
GPIO_InitTypeDef GPIO_InitS;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitS.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
GPIO_InitS.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitS.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitS);
GPIO_Write(GPIOA, GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);
while (1)
{
i = i % 8;
HC595SendData(stat[i++]);
Delay(0xFFFF);
}
}
|
|