从零点亮一个led灯

Stm32学习笔记一:stm32cubemx和keil5从零开始点亮一个LED灯

一、软件材料准备:stm32cubemx和keil5软件(下载方式可自行上网搜,这里不再详细叙述)

二、硬件材料准备:stlink-v2调试器(我的情况是已经装了驱动了)、杜邦线、stm32系统板

驱动网盘资源:

链接:https://pan.baidu.com/s/10FtTg39yIyhGFC-pYrWgGg
提取码:b73k
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V2的分享

STLINK/V2在线编程/编程器是stm8/32的很好的开发工具之一,他可以使用单线接口模块SWIM(用于stm8)和JTAG/串行线调试接口SWD(用于stm32)与目标板通信。连接图如下:
stlink接口图
stm32接口图

上图中stlink的SWCLK与SWDIO分别与系统板的CLK与DIO连接

三、CubeMX的使用及初始化(我的情况是已经安装了,安装教程可在网上找到)

我当时的情况是好久没用cubemax了,进去之后各种配置好了后点击“generate code”时无法生成代码,keil5软件没有启动,软件提示如下的情况:

“The Firmware Package(STM32Cube_FW_F1_V1.8.0)or one of its dependencies requiredby the Project is not available in your STM32CubeMX Repository”

上网查了好久都没有找到解决的办法,不过找到一个类似的,经过他的启示,我发现是固件库的文件地址出现了乱码,然而修改了之后依旧没有成功,最后发现打开cubemx时它会弹出一个让我更新的窗口,里面有可以重新修改固件库的地址,修改之后再进到cubemx的“Project manager”窗口时再在这里修改固件库的地址才能成功。
在这里插入图片描述

当上面画圈的固件库地址不再乱码时就成功了

1、CubeMX的初始化

(1)RCC时钟的设置。
在这里插入图片描述

将RCC始终设置为“Crystal/ceramic Resonator(水晶/陶瓷谐振器)”

(2)调试配置
在这里插入图片描述

将SYS中的Debug设置成Serial Wire(串口线)

(3)时钟树配置

Stm32f103c8t6的最高频率为72MHz
在这里插入图片描述

按上图配置就行,其中PLL是锁相环的意思(数电学过)

(4)项目配置
在这里插入图片描述
在这里插入图片描述
上图中打勾的地方都要选上,最后点击“Generate code”就能打开keil5并生成代码了。

四、查看项目文件

1、.ioc文件

在这里插入图片描述

2、Driver文件夹

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

3、“MDK-ARM”文件夹是STM32CubeMX软件针对MDK-ARM集成开发环境生成的项目开发和调试的文件

4、“Inc”文件夹和“Src”文件夹
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

五、keil5的使用及项目组介绍

1、keil5常用功能

在这里插入图片描述

2、项目组介绍

在这里插入图片描述

(1)Application/MDK-ARM组

该组添加有“startup_stm32f103xb.s”文件。该文件提供了stm32f103c8t6的中断矢量列表,供MDK-ARM工具链调用。该文件在微控制器启动后会被调用,用于初始化sp(堆栈指针寄存器)寄存器和pc(程序计数器)寄存器,设置中断向量入口,并最终调用主函数。在该文件中,可以找到不同的中断服务函数的名称列表,如外设“USART1”的中断服务函数的名称为“USART1_IRQHandle”。

(2)Application/User组

该组的文件前面已介绍过,这里需要说明的是其中的main.c文件和stm32f1xx_it.c文件,我们可以将自行定义的程序代码添加到其中。

(3)Drivers/STM32F1XX_HAL_Driver组

该组包含的是相应的外设驱动源文件,也就是我们所说的HAL库文件。比如,当使用I/O口驱动外围电路时,需要使用里面的“stm32f1xx_hal_gpio.c”源文件。另外在使用gpio时,必须使能gpio的时钟,所以还需要使用里面的“stm32f1xx_hal_rcc.h”文件。

(6)Drivers/CMSIS组:添加有“system_stm32f1xx.c”源文件。该文件是Cortex-M0器件外设访问层系统源文件,用于系统时钟配置,主要用于定义系统时钟源以及低速,高速时钟总线的频率等。

3、烧写注意事项

在这里插入图片描述

在这里插入图片描述

注意:烧写时点击界面上的Dowmload后立马同时点击系统版的复位键,这样才能烧写成功

由于我的系统板上的led灯是连在PA1引脚的,所以我只需要设置PA1引脚的GPIO Output level为low低电平即可,“GPIO Mode”设置成Output push pull(推免输出),GPIO pull-up/pull down(有开关是才需要设置)设置成no pul up and no pull down。GPIO pull-up/pull down(有开关是才需要设置)设置成no pul up and no pull down。
在这里插入图片描述

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
此软件包中提供的 HAL(硬件抽象层)驱动程序支持 以下STM32F100xx STM32F101xx,STM32F102xx,STM32F103xx ,STM32F105xx 和STM32F107xx系列。 STM32CubeF1固件包附带一个更新程序实用程序STM32CubeUpdater,可配置为自动或按需检查新固件包更新(新版本或/和补丁)。 要快速入门STM32CubeF1固件包,请参阅UM1847,您可以从www.st.com/stm32cube下载固件更新和所有最新文档。 下面 链接到最有用的文档 最新版本 的STM32CubeF1固件包。 UM1847:STM32F1系列STM32CubeF1入门。 UM1853:STM32CubeF1 Nucleo演示固件。 UM1850:STM32F1xx HAL驱动程序的说明。 UM1734:STM32Cube USB设备库。 UM1720:STM32Cube USB主机库。 UM1721:使用FatF在STM32Cube上开发应用程序。 UM1722:使用RTOS在STM32Cube上开发应用程序。 UM1713:使用LwIP TCP / IP堆栈在STM32Cube上开发应用程序。 UM1709:STM32Cube以太网IAP示例。 更新历史记录 V1.7.0 / 09-October-2018 主要变化 用于修复已知缺陷和一些实现增强的常规更新 对HAL驱动程序进行的以下更改需要基于较旧的HAL版本更新应用程序代码 HAL CAN驱动程序的返工(兼容性中断) 新的HAL CAN驱动程序已经使用新的API进行了重新设计,以绕过先前HAL CAN驱动程序版本中对CAN Tx / Rx FIFO管理的限制。 推荐使用新的HAL CAN驱动程序。它通常位于Drivers / STM32F1xx_HAL_Driver / Src和Drivers / STM32f1xx_HAL_Driver / Inc文件夹中。它可以通过stm32f1xx_hal_conf.h中的开关HAL_CAN_MODULE_ENABLED启用 出于软件兼容性原因,旧版HAL CAN驱动程序也出现在Drivers / STM32F1xx_HAL_Driver / Src / Legacy和Drivers / STM32F1xx_HAL_Driver / Inc / Legacy文件夹中。建议不要使用它作为已弃用的用法。但是可以通过stm32f1xx_hal_conf.h中的开关HAL_CAN_LEGACY_MODULE_ENABLED启用它 \ HAL stm32f1xx_hal_conf_template.h:添加开关 HAL_CAN_LEGACY_MODULE_ENABLED HAL CAN驱动程序已使用新API进行了重新设计。 \ CMSIS 修复已知缺陷 和几个实现 增强 \项目 更新CAN示例以支持新的HAL CAN驱动程序。 通过添加开关 HAL_CAN_LEGACY_MODULE_ENABLED 更新stm32f1xx_hal_conf.h 。 F 或完整的更改列表,请参阅每个固件组件的发行说明 内容 STM32CubeF1固件包附带了一系列在STMicroelectronics板上运行的示例,由板组织,并为主要支持的工具链提供预配置项目。此表(STM32CubeProjectsList.html)中提供了详尽的项目列表。 项目发布说明 STM32F103RB,核蛋白 应用程序 (发行说明) 演示(发行说明) 示例(发行说明) Examples_LL (发行说明) Examples_MIX (发行说明) 模板(发行说明) Templates_LL (发行说明) STM32VL发现 示例(发行说明) 模板(发行说明) Templates_LL (发行说明) STM3210C_EVAL 应用程序(发行说明) 示例(发行说明) 模板(发行说明) Templates_LL (发行说明) STM3210E_EVAL 应用程序(发行说明) 示例(发行说明) Examples_LL (发行说明) Examples_MIX (发行说明) 模板(发行说明) Templates_LL (发行说明) 驱动程序 Cortex-M CMSIS V4.5(发行说明) STM32F1xx CMSIS V4.3.0(发行说明) STM32F1 xx HAL V1.1.3 (发行说明) BSP STM3210E_EVAL V7.0.0 (发行说明) BSP STM3210C_EVAL V6.1.0 (发行说明) BSP STM32VL-Discovery V1.0.1 (发行
以下是一个简单的Verilog代码示例,用于在FPGA上通过串口控制LED的点和熄灭。 ``` module uart_led( input clk, input rstn, input [7:0] uart_rx_data, input uart_rx_ready, output reg [7:0] uart_tx_data, output reg uart_tx_valid, output reg led ); reg [7:0] data_reg; reg valid_reg; reg [3:0] cnt; assign led = data_reg[0]; always @(posedge clk or negedge rstn) begin if (~rstn) begin data_reg <= 8'h00; valid_reg <= 1'b0; cnt <= 4'h0; end else begin if (uart_rx_ready) begin data_reg <= uart_rx_data; valid_reg <= 1'b1; end if (cnt == 4'hF) begin uart_tx_valid <= valid_reg; uart_tx_data <= data_reg; cnt <= 4'h0; end else begin uart_tx_valid <= 1'b0; cnt <= cnt + 1; end end end endmodule ``` 在上面的代码中,输入时钟信号 `clk` 和复位信号 `rstn` 用于控制模块的行为。输入信号 `uart_rx_data` 和 `uart_rx_ready` 分别表示串口接收到的数据和接收数据是否准备好。输出信号 `uart_tx_data` 和 `uart_tx_valid` 分别表示要发送的数据和是否准备好发送数据。最后,输出信号 `led` 控制LED的状态。 在代码的主体部分中,`always` 块使用时钟信号来控制代码的行为。如果复位信号处于低电平状态,所有寄存器都将被重置为初始状态。如果接收到新的数据,则将其存储在 `data_reg` 寄存器中,并将 `valid_reg` 设置为有效。然后,使用计数器 `cnt` 来控制发送数据的时机。如果 `cnt` 达到 15,则表示已经发送了一组数据,将 `uart_tx_valid` 和 `uart_tx_data` 设置为相应的值,否则 `uart_tx_valid` 将保持为零,`cnt` 将增加1。最后,将 `data_reg` 的最低位用于控制LED的状态。 请注意,此代码仅用于演示目的,可能需要根据具体的FPGA板和串口模块进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值