2.STM32F4/7点灯

2019-08-16来源: eefocus关键字:STM32F4  7  点灯  时钟使能

思路:1.时钟使能(开启GPIOA端口时钟使能) 2.GPIO配置(推挽输出模式,频率,速度等) 3.GPIO输出高电平(输出置位) 


STM32F4:

推挽输出,输出低电平灯亮,输出高电平灯灭.


#include

 

void Delay(__IO uint32_t nCount){

while(nCount--);

}

void GPIO_Con(){

GPIO_InitTypeDef GPIO_Struct;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

GPIO_Struct.GPIO_Pin=GPIO_Pin_9;

GPIO_Struct.GPIO_Mode=GPIO_Mode_OUT;

GPIO_Struct.GPIO_Speed=GPIO_Speed_100MHz;

GPIO_Struct.GPIO_OType=GPIO_OType_PP;

GPIO_Struct.GPIO_PuPd=GPIO_PuPd_UP;

GPIO_Init(GPIOF,&GPIO_Struct);

}

 

int main(void){

GPIO_Con();

   while(1){

GPIO_SetBits(GPIOF,GPIO_Pin_9);

Delay(1000);

GPIO_ResetBits(GPIOF,GPIO_Pin_9);

Delay(1000);

}

}

 


STMF7:


更多的使用HAL库函数。


#include

#include

#include

static int timecounts;

 

 

static void MX_GPIO_Init(void)

{

 

  GPIO_InitTypeDef GPIO_InitStruct;

 

  __HAL_RCC_GPIOI_CLK_ENABLE();

 

  HAL_GPIO_WritePin(GPIOI, GPIO_PIN_1, GPIO_PIN_RESET);

 

  GPIO_InitStruct.Pin = GPIO_PIN_1;

  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull = GPIO_NOPULL;

  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;

  HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);

}

 

int main(){

    MX_GPIO_Init();

while(1){

  HAL_GPIO_WritePin(GPIOI, GPIO_PIN_1, GPIO_PIN_SET);

      HAL_Delay(500);

      HAL_GPIO_WritePin(GPIOI, GPIO_PIN_1, GPIO_PIN_RESET);

          HAL_Delay(500);

}

}

 


GPIO函数库:


1个初始化函数:void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)


2个读取输入电平函数:uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)


                                   uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx)


2个读取输出电平函数:uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)


                                      uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx)


 


4个设置输出电平函数:void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)


                                      void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)


                                      void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal)


                                      void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal)


针对管脚和针对端口的区别

关键字:STM32F4  7  点灯  时钟使能

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic471316.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:1.基于固件库建立STM32F4的工程模板
下一篇:3.STM32F4蜂鸣器

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

【STM32F103】中断综述

一、中断内核: STM32的中断很强大,每个外设都可以产生中断,F103在内核水平上搭载了异常响应系统,系统异常有8个(算上RESET和HardFault也就10个),外部中断有60个,但是根据NVIC(嵌套向量中断控制器,控制整个芯片中断相关的功能),IP(中断优先级寄存器)数组中预留了240个位置(NVIC结构如上图),可见眼光之远,用于扩展,这是STM32F103用不到这么多。如果以后要找跟内核相关的函数,都存在core_cm3.c和misc.c中,包括NVIC的函数的声明,但是其具体的库函数内容并不是和固件库头文件core_cm3.h一致(不在core_cm3.c),而是放在库函数的misc.c中,这点需要
发表于 2019-08-23
【STM32F103】中断综述

关于由CubeMx生成stm32f4+freertos,不正常分析之堆栈大小设置

freertos官方手册上有说,移植中出现的问题大多数是由堆栈设置不合理造成的,今天结合自身遇到问题分析一下1.任务堆栈设置过小,很容易造成硬件溢出,跳转到void HardFault_Handler(void);调试方法,可以通过调用函数,UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );来跟踪剩余堆栈,不过在CubeMx中的Configuration->FreeRtos->Include parameters中使能uxTaskGetStackHighWaterMark函数;2.整体设置过小,TOTAL_HEAP_SIZE
发表于 2019-08-23

CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定时器

先上图如图 是我生成的一个波形  这个波形的占空比在连续的四个周期内分别是10%,20%,30%,40%, 并且按照这个顺序循环这里大致介绍一下实现的方式。使用的软件是Cubemx(库函肯定也可以实现)第一步是器件选型  这一部分不做介绍  用的是Stm32F407第二是时钟配置接下来是定时器配置 第三步就是生成代码了这里 需要在生成的代码里面加上一行开始的代码。
发表于 2019-08-23
CubeMX Stm32F407生成一定周期的占空比不同的方波DMA+定时器

STM32F103控制舵机

//TIM4 PWM部分初始化 //PWM输出初始化//arr:自动重装值//psc:时钟预分频数void TIM4_PWM_Init(u16 arr,u16 psc){   GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; TIM_OCInitTypeDef  TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能定时器3时钟 
发表于 2019-08-23

基于STM32F103ZET6主控平台实现定时器TIM3的驱动

_Clock_Init(9);   //系统时钟设置 delay_init(72);     //延时初始化 uart_init(72,115200); //串口初始化为115200 LED_Init(); BEEP_Init(); TIM3_Init(4999,7199); while(1) { if(Wl_stat==0)//代表进入WHILE循环 { printf("Input While(1)-->rn"); Wl_stat=1; } LED1=!LED1; delay_ms(200); }} 第四步:编译通过后,烧录进STM32F103ZET6开发板,实现
发表于 2019-08-22

STM32f103ZET6定时器TIM3使用通道1输出PWM程序

总结:TIM3_CH1输出口为PA6(重映射为PB4),PB5位DS0接口。1.使用重映射之后,原始IO口不再有输出;本例子中,若使用部分重映射,则 PA6映射到PB4中,所以仅仅PB4有波形输出;飞线连接PB4与PB5即可观察PWM呼吸灯效果。2.使用IO口前务必初始化,本例子中开始仅仅初始化了PB5口,而没有初始化PA6导致一直验证失败;正点原子给出程序中是由通道2直接映射到PB5因此只需要初始化PB5口即可,不存在上述问题。3.除了正常输出输入信号之外,输出PWM以及其他功能均属于IO口的复用功能。#include "stm32f10x.h"#include "led.h"
发表于 2019-08-22

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved