学习日志
姓名:陈长稳 日期:7.24
今日学习任务
整理涉及到的寄存器和固件库,开发板有四个灯,实现彩灯功能
今日任务完成情况
实现了彩灯功能,点亮了开发板上的四个灯,并进行流水灯显示。
今日开发中出现的问题汇总
1.延时函数位置不正确
2.烧入程序时未正确勾选选项
今日未解决问题
无
今日开发收获
通过实践,对stm32的基础知识有了一定的了解,能够实现彩灯功能。
自我评价
继续努力,加深对stm32基础知识的了解
点亮开发板四个彩灯:
程序源代码:
#include "stm32f4xx1.h"
int main(void)
{
RCC_AHB1ENR |= (1<<2);
GPIOC_MODER &= ~(3<<2);
GPIOC_MODER |= (1<<(2*1));
GPIOC_OTYPER &= ~(1<<1);
GPIOC_OSPEEDR &= ~(3<<2);
GPIOC_OSPEEDR |= (2<<2);
GPIOC_ODR |= (1<<1);
GPIOC_MODER &= ~(3<<(2*2));
GPIOC_MODER |= (1<<(2*2));
GPIOC_OTYPER &= ~(1<<2);
GPIOC_OSPEEDR &= ~(3<<(2*2));
GPIOC_OSPEEDR |= (2<<(2*2));
GPIOC_ODR |= (1<<2);
GPIOC_MODER &= ~(3<<(2*3));
GPIOC_MODER |= (1<<(2*3));
GPIOC_OTYPER &= ~(1<<3);
GPIOC_OSPEEDR &= ~(3<<(2*3));
GPIOC_OSPEEDR |= (2<<(2*3));
GPIOC_ODR |= (1<<3);
GPIOC_MODER &= ~(3<<(2*4));
GPIOC_MODER |= (1<<(2*4));
GPIOC_OTYPER &= ~(1<<4);
GPIOC_OSPEEDR &= ~(3<<(2*4));
GPIOC_OSPEEDR |= (2<<(2*4));
GPIOC_ODR |= (1<<4);
while(1);
}
void SystemInit(void)
{
}
#ifndef _STM32F4XX_H
#define _STM32F4XX_H
#define PERIPH_BASE (0x40000000)
#define AHB1PERIPH_BASE (PERIPH_BASE + 0x20000)
#define RCC_BASE (AHB1PERIPH_BASE + 0x3800)
#define RCC_AHB1ENR *(unsigned int *)(RCC_BASE + 0x30)
#define GPIOC (AHB1PERIPH_BASE + 0x800)
#define GPIOC_MODER *(unsigned int *)(GPIOC + 0x00)
#define GPIOC_OTYPER *(unsigned int *)(GPIOC + 0x04)
#define GPIOC_OSPEEDR *(unsigned int *)(GPIOC + 0x08)
#define GPIOC_PUPDR *(unsigned int *)(GPIOC + 0x0c)
#define GPIOC_ODR *(unsigned int *)(GPIOC + 0x14)
#endif