推荐阅读最新更新时间:2024-03-16 15:15
英蓓特携手ST推出STM32 Coocox开发工具
Premier Farnell集团子公司英蓓特科技日前宣布与为各个电子应用领域提供服务的全球领先企业意法半导体(纽交所: STMicroelectronics)倾力合作,共同实现了免费开源的CooCox工具链与最新STM32系列微处理器产品之间的完美结合,使开发人员可以借助STM32产品系列中600多个MCU的支持,实现各种性能和功能的提升。 CooCox是一款免费/开源的针对ARM® Cortex®-M的软件开发工具链,包括软件工具、代码组件、硬件设计和面向ARM Cortex微控制器的社区支持。使用CooCox软件工具的开发人员可从支持设备列表中轻松选择目标设备来进行创建与编译,并对STM32微控制器进行编程。
[嵌入式]
STM32裸机编程的基础知识(2)
在前一篇文章中我们已经学习到可以通过直接访问存储地址来读写外设寄存器,下面复习下将 GPIO A3 设为输出模式的代码: * (volatile uint32_t *) (0x40020000 + 0) &= ~(3 6); // CLear bit range 6-7 * (volatile uint32_t *) (0x40020000 + 0) |= 1 6; // Set bit range 6-7 to 1 这段代码有些诡秘,如果不加以注释,很难理解。我们可以把这段代码重写成更易读的形式,方法就是用一个包含 32 位域的结构体来表示整个外设。我们来看一下数据手册 8.4 节中描述的 GPIO 外设的寄存器
[单片机]
STM32标准库改为HAL库的程序实现
标准库占绝大多数,自己买的板子跟的资料也一般是标准库,HAL库很少,不过要是使用STM32CubeMx配置,那么就是使用的HAL库了,而参考资料是标准库的,就没有办法用。 注意: 1. 标准库与HAL库不兼容,不要想着直接拿来用了,比如标准库使用#include stm32f10x.h ,HAL库使用#include stm32f1xx_hal.h 要让标准库程序使用HAL库时也可以正常运行得到想要的结果,有以下几种方法: 一、 将标准库程序中的每个函数内的代码修改为使用HAL库且同样效果的代码, 比如标准库中配置GPIO的代码直接就可以用STM32CubeMx配置为相同效果 二、根据标准库程序整个程序运行的原理使用HAL库
[单片机]
STM32 USB 枚举分析
芯片:STM32F407VE 编译器:KEIL5 STM32 USB枚举 用到比较重要的寄存器:OTG_HS 主机端口控制和状态寄存器 (OTG_HS_HPRT) 系统复位 等待USB连接,延时100ms 主机对USB设备复位,主机检测到端口使能位置位,与设备建立连接 主机再次对USB设备复位,复位结束,开始枚举过程。 主机拥有8个通道,其中IN占用0通道,OUT占用1通道。打开IN和OUT管道 获取设备描述符,只获取8个字节,为了得到通道0的最大包长度。将状态机调整到HOST_CTRL_XFER。同时备份当前全局状态,便于跳转到HOST_CTRL_XFER恢复状态。 USBH_Get_DevDesc(pde
[单片机]
关于STM32单片机不能用JLink和ST-Link下载程序的原因分析
最近一段时间给STM32单片机下载程序的时候,有的时候出现下载不了的情况,尝试过JLink+MDK,JLink+JFlash, ST-Link+MDK,ST-Link+ST-LINK Utility均不能实现程序下载。故障截图如下: 在本人当前的应用场景下,是因为STM32单片机的读保护功能启用了,通过ST-Link+ST-LINK Utility的Target-Option Bytes菜单查看读保护等级。当前的应用场景下,因为读保护功能设置为了level 1导致下载不了,如下图所示: 解决办法: (1)通过ST-Link+ST-LINK Utility将选项字节中的读保护等级设置为level0; (2
[单片机]
STM32初识I2C
1、通讯协议。 I2C是PHILIPS公司开发的两线式串行总线,属于同步半双工。 数据有效 在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变 。 起始停止 SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件; SCL 线是高电平时,SDA 线由低电平向高电平切换,这个情况表示停止条件。 起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态 ,在停止条件的某段时间后总线被认为再次处于空闲状态。 如果产生重复起始条件而不产生停止条件,总线会一直处于忙的状态,此时的起始条件(S)和重复起始条件(Sr) 在功能上是一样的。 数
[单片机]
STM32直流电机启动(一)驱动电路的介绍
驱动电路 典型的H桥驱动电路如下: 要使电机旋转只需导通对角线上的两个三极管即可,如导通Q1,Q4,关闭Q2,Q4即可驱动电机正转; 若想电机反向转动,即导通三极管Q2,Q3,关闭Q1,Q4。 此时电路图可简化为如下所示: 但当我们直接导通一个半桥上的Q1,Q3(或Q2,Q4)时,电源被短接,由于三极管电阻很小,此时流过三极管的电流很大,非常容易烧坏三极管,因此实际运用中一定不能导通同一个半桥上的三极管。 但是在实际情况中,三极管导通/关闭和电路中的其它原件操作都存在一定延时的,因此不能简单的认为,只需要同时将Q1,Q4导通,Q2,Q3关闭即可驱动电机; 为避免上述情况的发生,一般有如下两种方式: 1.硬件上采
[单片机]
如何利用STM32CubeMX来自动生成STM32代码
众所周知, ARM Cortex M 系列是 ARM 专门为 单片机 设计的内核。其中,STM32 系列的芯片可以算得上最成功的 ARM Cortex M 系列的芯片了。在最早期,ARM Cortex M 系列的核心刚用在单片机设计的时候,同时期也有很多厂商推出 ARM Cortex M 核心的单片机,但为什么 STM32 会如此之普及?其中的缘由,离不开当时 意法半导体 推出的方便的固件库。 为什么区区一个 STM32 的固件库可以有这么大的作用?这是因为早在 8 位机和 16 位机的时代,单片机内部的每一个外设的 寄存器 数量是有限的,我们即使一个一个去配置也没有多少工作量。但是 ARM Cortex M 核心,操作外设时需要
[单片机]