第一章F407建工程所需依赖文件
第二章 新建工程
说明:STM32F4 的主频最高是 168Mhz,所以我们一般设置 PLLCLK 为 168Mhz(M=8,N=336,P=2),通过 SW 选择 SYSCLK=PLLCLK即可得到 168Mhz 的系统运行频率。
第三章分析LED硬件原理图
第四章 编写LED驱动代码
查看数据手册:
Led.c文件代码如下:
#include "led.h"
/*
函数功能:LED初始化
硬件连接:
PF8-->BEEP --高电平响
PF9-->LED0 --低电平亮
PF10->LED1 --低电平亮
*/
void LED_Init(void)
{
/*1. 开时钟*/
RCC->AHB1ENR|=1<<5;//使能PORTF时钟
/*2. 配置GPIO口模式*/
GPIOF->MODER&=~(0x3<<8*2); //清除模式
GPIOF->MODER|=0x1<<8*2; //配置输出模式
GPIOF->MODER&=~(0x3<<9*2); //清除模式
GPIOF->MODER|=0x1<<9*2; //配置输出模式
GPIOF->MODER&=~(0x3<<10*2); //清除模式
GPIOF->MODER|=0x1<<10*2; //配置输出模式
/*3. 配置GPIO口输出类型*/
GPIOF->OTYPER&=~(0x1<<8); //0表示推挽输出
GPIOF->OTYPER&=~(0x1<<9); //0表示推挽输出
GPIOF->OTYPER&=~(0x1<<10); //0表示推挽输出
/*4. 配置GPIO口输出速度*/
GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<8*2; //50MHZ输出速度
GPIOF->OSPEEDR&=~(0x3<<9*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<9*2; //50MHZ输出速度
GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<10*2; //50MHZ输出速度
/*5. 配置GPIO口输出默认电平*/
GPIOF->ODR|=1<<10; //输出1
GPIOF->ODR|=1<<9; //输出1
GPIOF->ODR&=~(1<<8); //输出0
}
复制代码
第五章 编译代码 配置下载
第六章 编写无源蜂鸣器驱动代码
Delay.c延时函数代码
#include "delay.h"
/*
功能 :毫秒级别的延时函数
参数 :填入延时的时间
返回值:无
说 明:频率在168MHZ情况下使用
*/
void DelayMs(u32 time)
{
u32 a,b,c;
for(a=0;a;a++)>
Led.c代码
#include "led.h"
/*
函数功能:LED初始化
硬件连接:
PF8-->BEEP --高电平响
PF9-->LED0 --低电平亮
PF10->LED1 --低电平亮
*/
void LED_Init(void)
{
/*1. 开时钟*/
RCC->AHB1ENR|=1<<5;//使能PORTF时钟
/*2. 配置GPIO口模式*/
GPIOF->MODER&=~(0x3<<8*2); //清除模式
GPIOF->MODER|=0x1<<8*2; //配置输出模式
GPIOF->MODER&=~(0x3<<9*2); //清除模式
GPIOF->MODER|=0x1<<9*2; //配置输出模式
GPIOF->MODER&=~(0x3<<10*2); //清除模式
GPIOF->MODER|=0x1<<10*2; //配置输出模式
/*3. 配置GPIO口输出类型*/
GPIOF->OTYPER&=~(0x1<<8); //0表示推挽输出
GPIOF->OTYPER&=~(0x1<<9); //0表示推挽输出
GPIOF->OTYPER&=~(0x1<<10); //0表示推挽输出
/*4. 配置GPIO口输出速度*/
GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<8*2; //50MHZ输出速度
GPIOF->OSPEEDR&=~(0x3<<9*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<9*2; //50MHZ输出速度
GPIOF->OSPEEDR&=~(0x3<<8*2); //清除之前配置
GPIOF->OSPEEDR|=0x2<<10*2; //50MHZ输出速度
/*5. 配置GPIO口输出默认电平*/
GPIOF->ODR|=1<<10; //输出1
GPIOF->ODR|=1<<9; //输出1
GPIOF->ODR&=~(1<<8); //输出0
}
/*
1/2000HZ=0.0005s=0.5ms=500us
1/4000HZ=0.25ms
控制蜂鸣器:产生2KHZ~5KHZ的方波即可
*/
void BEEP_Ctlrl(u8 cmd,u32 time)
{
u8 i;
if(cmd) //打开蜂鸣器
{
for(i=0;i;i++)>
Mian.c主函数代码
Mian.c主函数代码
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
int main(void)
{
u8 i;
LED_Init();
while(1)
{
i=!i;
BEEP_Ctlrl(i,200);
}
}
复制代码
第七章 LED呼吸灯示例
第七章 LED呼吸灯示例
#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
int main(void)
{
u32 i,k=1000;
LED_Init();
while(1)
{
for(i=0;i;i++)>
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
输出
+关注
关注
0文章
90浏览量
21810 -
GPIO
+关注
关注
16文章
1196浏览量
51896 -
STM32F407
+关注
关注
15文章
187浏览量
29364
发布评论请先 登录
相关推荐
STM32F407 GPIO口输出配置配置步骤
STM32F407ZGT6 是意法半导体(STMicroelectronics)公司推出的一款高性能ARM Cortex-M4核心的32位微控制器(MCU)。它是 STM32F4 系列的一员,具备强大的处理能力和丰富的外设功能,适用于各种应用领域
【STM32F407开发板用户手册】第1章 初学STM32F407的准备工作
【STM32F407开发板用户手册】第1章 初学STM32F407的准备工作
发表于 12-04 13:36
•75次下载
【STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
【STM32F407开发板用户手册】第21章 STM32F407的NVIC中断分组和配置(重要)
发表于 12-04 13:51
•21次下载
【STM32F407开发板用户手册】第19章 STM32F407的GPIO应用之按键FIFO
【STM32F407开发板用户手册】第19章 STM32F407的GPIO应用之按键FIFO
发表于 12-05 15:21
•39次下载
STM32F407入门开发: 配置定时器输出PWM方波
STM32F407的定时器的 TIM6 和 TIM7 是普通定时器,除此之外,其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM
STM32F407入门开发: 位带操作
STM32F407的位带操作可以实现类似51单片机中寄存器的操作方法,操作GPIO口代码简洁方便。 关于位段的操作在Cortex-M3M4权威指南里有详细描述:
STM32F407入门开发: 串口配置
STM32F407 的串口资源非常丰富,功能也很强劲。 STM32F407 最多可提供 6 路串口,有分数波特率发生器、支持同步单线通信和半双工单线通讯、支持 LIN、 支持调制解调器操作、 智能卡
评论