STM32学习第一步:点灯

发布者:温暖微笑最新更新时间:2022-06-30 来源: csdn关键字:STM32  点灯 手机看文章 扫描二维码
随时随地手机看文章

前言

任务需求:使用stm32c8点亮两个led小灯并实现闪烁效果


注:本次任务包含CubeMX+hal库以及单独使用标准库两种写法完成代码构建。并最后通过Proteus仿真测试运行结果


提示:以下是本篇文章正文内容,下面案例可供参考


一、CubeMX生成keil5工程文件

工程配置:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

时钟配置:

在这里插入图片描述

生成Keil5工程文件:注意:路径及名称不能有中文

在这里插入图片描述

hal库完善代码逻辑

注意:前面我们通过cubemx将工程硬件配置完毕,所以这里只需要完善软件逻辑层代码


 while (1)

  {

    /* USER CODE END WHILE */

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_RESET);

HAL_Delay(500);

HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8|GPIO_PIN_9,GPIO_PIN_SET);

HAL_Delay(500);


    /* USER CODE BEGIN 3 */

  }


编译并运行

在这里插入图片描述

二、标准库写法及完善代码逻辑

#include "stm32f10x.h"


void Delay(unsigned int count){

unsigned int i;

for(;count!=0;count--){

i=5000;

while(i--);

}

}


int main(){

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIO时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;//PB引脚配置

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//配置PB为推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//GPIOB速度为50Mhz

GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化PB

GPIO_SetBits(GPIOB,GPIO_Pin_9);//PA9输出高电压,LED熄灭

while(1){

GPIO_ResetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);//输出低电平,LED点亮

Delay(500);//延时500毫秒

GPIO_SetBits(GPIOB,GPIO_Pin_8|GPIO_Pin_9);//输出高电平,LED熄灭

Delay(500);//延时500毫秒

}

}


三、Proteus仿真测试

对之前两种写法生成的hex文件分布测试均完成本次目标


选择生成的hex文件并将时钟设置为8M

在这里插入图片描述

运行仿真:

在这里插入图片描述
在这里插入图片描述

关键字:STM32  点灯 引用地址:STM32学习第一步:点灯

上一篇:STM32_GPIO口
下一篇:STM32学习第四课:STM32 c语言学习基础4

推荐阅读最新更新时间:2024-11-17 02:16

STM32之ADC原理
ADC的位数决定了ADC的精度,有8位的,12位的,16位的等。 还有一个很重要的参数就是转换时间。 ST M32f103RBT6有2个ADC 控制器 。128KFlash,20KRAM 每一个ADC控制器都有多个通道,例如ADC1的外部通道有16个,可以理解为有一个 开关 分别连接各个通道。 每个通道的采样间隔和采样时间都可以设置。 三。ADC各通道与IO管脚对应表 一般负参考电压接地,正参考电压接 3.3V 。 模拟输入电压不能超过3.3V,否则输入 引脚 可能被烧毁。 ADC框图 Vref+连接到VDDA,Vref-连接到VSSA。 最多4个通道连接到注入通道,最多16个通道连接到规则通道。 什么
[单片机]
<font color='red'>STM32</font>之ADC原理
FLASH模拟EEPROM实验
FLSH操作总结: 1, 锁定解锁函数 上面讲解到在对FLASH进行写操作前必须先解锁,解锁操作也就是必须在FLASH_KEYR寄存器写入特定的序列(KEY1和KEY2),固件库函数实现: void FLASH_Unlock(void); 同样的道理,在对FLASH写操作完成之后,我们要锁定FLASH void FLASH_Lock(void); 2,写操作函数 固件库提供了三个FLASH写函数: FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data); FLASH_Status FLASH_ProgramHalfWord(uint
[单片机]
FLASH模拟EEPROM实验
STM32串口通信中使用printf发送数据配置方法
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 标签: STM32 串口通信 printf方法 2011-06-29 23:29 在STM32串口通信程序中使用printf发送数据,非常的方便。可在刚开始使用的时候总是遇到问题,常见的是硬件访真时无法进入main主函数,其实只要简单的配置一下就可以了。 下面就说一下使用printf需要做哪些配置。 有两种配置方法: 一、对工程属性进行配置,详细步骤如下 1、首先要在你的main 文件中 包含“stdio.h” (标准输入输出头文件)。 2、在main文件中重定义函数 如下: // 发送数据 in
[单片机]
STM32 Cotex-M3处理器系列编程】时基定时器
#include stm32f10x.h void Delay(unsigned int x); unsigned int TimingDelay; int main(void) { SystemInit();//配置系统时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能APB2外设时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD,ENABLE);//IO口使
[单片机]
stm32 学习 (设置TIM4输出4路 pwm J-LINK仿真验证)
使用单片机:stm32f103c8t6 资源 RAM: 20K; flash: 64K;CPU频率: 72M;通用I/O: 32个;UART: 3个;SPI:2个;USB:1个;CAN: 1个;IIC: 2个 12 位同步 ADC: 2 组 10 通道 ; 工作电压: 2.0 至 3.6V 原理图: PWM输出过程: 1. 脉冲计数器 TIMx_CNT 为向上计数。 2. 重载计数器 TIMx_ARR 配置为N。(TIM_Period值) 3. TIMx_CNT的当前计数值 X 在TIMxCLK时钟源驱动下不断累加; 脉冲计数器 TIMx_CNT 数值 X 大于 重载计数器 TIMx_ARR
[单片机]
<font color='red'>stm32</font> <font color='red'>学习</font> (设置TIM4输出4路 pwm J-LINK仿真验证)
STM32单片机-资料查找
一、中国店铺选型选购 意法半导体STM | STM32/STM8微控制器 | MCU单片机 ----------------------------------------------------------------------------------------------------------------- 二、ST单片机选型 STM8选型手册与STM32最新选型手册移步:download.csdn.net/download/liht1634/33432832。 1、官网选型 ------------------------------------------------------
[单片机]
<font color='red'>STM32</font>单片机-资料查找
STM32的中断及是如何使用
中断是一种机制,通过这种机制,I/O或指令可以暂停处理器的正常执行,并像具有最高优先级一样先执行自己的任务。也就是说,当外部中断发生时(比如来自某个传感器),处理器暂停其正在执行,首先提供中断服务,然后继续其正常执行。 为了了解 STM32F103C8 中的中断,我们将使用按钮作为外部中断。在这里,我们让一个变量从 0 开始每秒增1,并将其显示在16x2 LCD上,每当按下按钮时,LED 亮起,LCD 显示屏会显示 INTERRUPT。 中断类型和 ISR(中断服务程序) 中断大致可以分为两类: 1.硬件中断: 如果到处理器的信号来自某些外部设备,例如按钮或传感器,或者来自其他信号并告诉处理器执行 ISR 中存在的特定任务
[单片机]
<font color='red'>STM32</font>的中断及是如何使用
STM32 编译后不能运行的几个原因
一、编译和链接都可以通过,但uVision MDK不能全速运行,一运行就停止了,原因在于Option- Target- Code Generation- Use MicroLIB 复选框没有打钩,一般来说,针对一运行就停止的情况,将Use MicroLIB勾选之后,重新编译,运行就可以通过了。 二、仿真调试时没有问题,但通过JLink调试时出现如下提示: Flash Download Failed- Cortex-M3 ,则可能的原因是:Option- Debug- Use Driver for Flash Programming- Setting- Flash Download- Programming Algotithm
[单片机]
<font color='red'>STM32</font> 编译后不能运行的几个原因
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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