您的位置:首页 > 其它

STM32学习第五天---看了CT117E比赛版的硬件结构

2015-11-29 00:03 302 查看
昨天好歹了解了下stm32的一些个固件库,这就说明要开启固件库编程。但是我看的那个视频他用的开发板跟我这个不一样,我用的是蓝桥杯的“嵌入式系统设计”的国信长天的CT117E开发板,所以我自己又拿出我的板原理图看了看(看了好半天也没看出啥,实在不喜欢看这东西)。差不多知道PA,PB,PC这几个通用I/O口的分别对应的功能了。然后就是自己编写了一个流水灯的代码(额,是在看懂别人的代码基础上自己编写的)。一开始我就搞不懂,为什么非要弄个锁存器在那锁来锁去的搞什么飞机。到一个群里问他们why,给我的回答是,不懂基本原理学单片机真是可怕,不过最后还是弄懂了点。加个锁存器是为了节省I/O口,就是控制LED的这几个i/o可以拿去干别的事情通过锁存器而不会影响到I/O口。(大概就是这样子了)。

Gxc_ct117e_led流水灯 的 代码:

#include "stm32f10x.h"
#include "led.h"

void LED_Control(uint16_t LED, uint8_t LED_Status)
void LED_Init(void);

int main()
{
unsigned int i;
char j = 8;
LED_Init();
LED_Control(LEDALL, 0);
while (1)
{
LED_Control(1 << j, 1);
for (i = 0x3fffff; i > 0; i--)
LED_Control(1 << j, 0);
for (i = 0x3fffff; i > 0; i--)
j = (++j == 16) ? 8 : j;
}
}

void LED_Init()
{
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);

//LED引脚配置, PC08~PC15 对应 H_D0~H_D7
GPIO_InitStructure.GPIO_Pin = LED0 | LED1 |LED2 | LED3 |LED4 | LED5 | LED6 | LED7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);

//74HC573锁存引脚配置,PD2 对应 N_LE
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}

void LED_Control(uint16_t LED, uint8_t LED_Status)
{
if (LED_Status == 0)
{
GPIO_SetBits(GPIOC, LED);
GPIO_SetBits(GPIOD, GPIO_Pin_2); //开锁存器
GPIO_ResetBits(GPIOD, GPIO_Pin_2); //关, 锁存状态
}
else
{
GPIO_ResetBits(GPIOC, LED);
GPIO_SetBits(GPIOD, GPIO_Pin_2);
GPIO_ResetBits(GPIOD, GPIO_Pin_2);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stm32