学号最后两位为ab,学号为奇数的使用GPIOA,学号为偶数使用GPIOC,引脚分别为(ab+5)%16,(ab+6)%16。直接调用延时函数为Delay(m),单位ms(不需要定义)。共阳接法,设计一个流水灯程序。
时间: 2023-05-30 19:01:40 浏览: 83
流水灯单片机C程序,定时器做延迟函数
5星 · 资源好评率100%
#include "stm32f10x.h"
void GPIO_Configuration(void);
int main(void)
{
GPIO_Configuration();
while (1)
{
GPIO_SetBits(GPIOA, GPIO_Pin_5);
GPIO_SetBits(GPIOC, GPIO_Pin_5);
Delay(1000);
GPIO_SetBits(GPIOA, GPIO_Pin_6);
GPIO_SetBits(GPIOC, GPIO_Pin_6);
Delay(1000);
GPIO_ResetBits(GPIOA, GPIO_Pin_5);
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
Delay(1000);
GPIO_ResetBits(GPIOA, GPIO_Pin_6);
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
Delay(1000);
}
}
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
if ((0x3F & (uint16_t) (FLASH_ReadUID(0x1FFFF7E8))) % 2 == 1) // 奇数
{
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
else // 偶数
{
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
}
阅读全文