在我们了解libopencm3的使用后,发现libopencm3只适用于小型工程,其最大的特色只是在USB方面的使用方便,那么在我们配置大型工程的时候有没有一种更快捷的方式呢,显然是有的。它就是CubeMX,ST官方出的神器,可以使得我们像配置FPGA一样配置STM32的功能。CubeMX早期是运行在windows下的,但由于是Java写成的它也可以同样的运行在Linux环境中。
安装JAVA环境
在Ubuntu中可以使用的java环境有很多我们这里使用软件中心的默认安装。
$ sudo apt-get install default-jre
安装完毕后可使用指令查看java版本验证安装成功
$ java -version
安装CubeMX
首先我们在st的官网下载cubemx的安装包
http://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html
解压并 cd 进入解压后的文件
使用指令运行 .Linux 执行文件
$ ./SetupSTM32CubeMX-4.19.0.linux
随后根据软件提示安装完成即可。
在完成安装后我们为了使得CubeMX可以显示图标,我们将安装包路径
下的图标文件复制到软件安装的位置。
SetupSTM32CubeMX-4.19.0.app/Contents
随后我们使用管理员权限在Ubuntu中添加应用的快捷方式:
$ sudo gedit /usr/share/applications/STM32CubeMX
在文件夹中写下
[Desktop Entry]
Version=4.19.0
Name=STM32CubeMX
Exec=/home/yangliu/Application/STM32CubeMX/STM32CubeMX
Terminal=false
Icon=/home/yangliu/Application/STM32CubeMX/stm32cubemx.icns
Type=Application
Categories=Development
此处注意 Exec、Icon后面的路径要根据自己软件安装的位置改变。在编辑完成后,我们就可以在Ubuntu的菜单中找到STM32CubeMX了,我们就可以将它拖到快速启动栏上了。
使用CubeMX生成工程
对于怎样使用CubeMX生成我们板卡的工程在Ubuntu下是和windows下一样的,我们就不做讲解了,唯一不同的是,我们在最后设置工程输出的IDE/Toolchain设置中要选择SW4STM32。
最后再配置好我们的makefile,就可以愉快的开始啦~。
我已经将一个使用cube生成的用于STM32F429DISCO的工程托管到GitHub,大家可以自己下载进行参考。工程中附含了一个标准的makefile文件,附带有详细的注释和清晰地结构,大家可以根据自己的需要去修改。
$ git clone https://github.com/zhengyangliu/STM32CubeMX-F429DISCO.git
修正
最近的使用过程中发现CubeMX能直接生成带Makefile和链接文件的工程了,只要稍微改一下编译器路径和文件路径就能编译通过并正确运行了。
关键字:STM32 CubeMX STM32工程
引用地址:
STM32高级开发(14)-使用CubeMX生成STM32工程
推荐阅读最新更新时间:2024-03-16 16:00
STM32串口使用心得(二)——串口溢出中断(ORE)
关于STM32的串口溢出中断,之前在网上看过两篇博客《STM32串口接收中断溢出问题解决》和《STM32 串口中的硬件BUG,请注意!》,也是从中学习到了串口ERROR的用法。关于串口溢出中断的相关寄存器操作和一些细节,两位博主已经讲得很详细了,在此感谢两位博主的辛勤付出。 接下来主要谈及CubeMX如何配置溢出中断以及本人遇到的一些问题。 首先,要把串口配置成RXNE中断,具体的配置步骤可以参考我的文章《关于CubeMX的串口全双工接收发送锁死的问题》。 然后,使能RXNE中断和ORE中断,main.c中的代码如下: void main(void) { ... if(HAL_UART_Receive_IT
[单片机]
【STM32CubeMX】15,NVIC,中断优先级
以前虽然用到了中断,但很少用到中断优先级。现在必须有了,比如急停之类的。 http://www.waveshare.net/study/article-641-1.html 抢占优先级是用来判断一个中断是否可以打断另外一个中断的中断服务程序抢先运行。 响应优先级是用来判断抢占优先级相同的几个中断那个中断会优先响应。 中断优先级分组是为了给抢占式优先级和响应优先级在中断优先级寄丛器的四个比特位分配各个优先级数字所占的位数。例如3位用于抢占优先级(优先级有2^3=8种优先级),1位用于响应优先级(优先级有2^1=2种优先级)。 中断服务函数里面就调用了GPIO外部中断处理函数HAL_GPIO_EXTI_IRQH
[单片机]
STM32不同外部晶振时工程的配置问题
遇到的问题: 同样的串口配置代码在一种407开发板上能正常输出,但是换到另一种407开发板上后就出现乱码,检查串口输出波形后发现,电平转换芯片没有问题,但是波特率却有问题。 问题原因: 经过故障排查发现出现上述问题的原因是两种STM32F407使用的外部晶振的频率不一样,前者使用的是25MHZ的晶振,而后者却是使用的8MHZ的晶振,如果代码未经更改而直接用在后者身上,就会出现上述串口乱码的情况,而且后者的每bite位的周期就是前者的三倍左右。 解决办法: 方法一: 因为 STM32F407的库文件中默认晶振值为25MHz,若外接晶振8MHz。所以: 1.首先需要修改 Option for target
[单片机]
STM32之触摸屏
一、触摸屏控制器简介 1、TSC2046概貌 2、TSC2046引脚描述 3、TSC2046应用电路 4、常见接线方法 YU=Y- YD=Y+ XL=X- XR=X+ 二、TSC2046编程注意事项 TSC2046的PENIRQ脚在触摸屏被按下的时候输出低电平,没有按下的时候输出高电平。需要格外注意的是在MCU给TSC2046发送命令的时候,次引脚也会产生错误的低电压脉冲,0 us t 100 us。 It is recommended that the processor mask the interruptPENIRQ is associated with whenever the proce
[单片机]
STM32低功耗模式简介
STM32F10xxx有三中低功耗模式: ●睡眠模式(Cortex?-M3内核停止,外设仍在运行) ●停止模式(所有的时钟都以停止) ●待机模式(1.8V电源关闭) 时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。 上电,默认使用内部HSI时钟8M,经测试10mA左右。待机模式可实现系统的最低功耗。 可将电流消耗降至两微安。 在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚: ●复位引脚(始终有效) ●当被设置为防侵入或校准输出时的TAMPER引脚 ●被使能的唤醒引脚 /*按钮GPIOB9进入睡眠,WKUP pin(GPIOA0)唤
[单片机]
STM32时钟与GPIO分析 基于STM32的LED灯开发
一、 STM32时钟分析 寄存器 :寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成 在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和 控制寄存器 。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。 控制寄存器 :相当一排可通过0/1进行设置外设功能的开关,程序中通过地址查找到对应的寄存器,所以说控制寄存器的地址是唯一。 芯片时钟:芯片工作时,是需要脉冲,脉冲相当于给芯片起振,可保证芯片的正常工作,类似于人,心脏正常跳动,人体生命特征才能正常。 1HZ:一秒产生1个脉冲 频率换算单位:
[单片机]
STM32之输入捕获以及小小应用(库)
简介:五一之际,先祝大家五一快乐、其实快乐很简单,工作的人有假放,学习的人也有假放,像我,有假放才有更多的时间学自己想学的东西、51假期学51,可惜没有32假期呀、好了、、言归正传,大家听过吸星大法吧、、在这里、智商和情商比我高的人估计又知道我要说什么了、、没错了、、今天我们来了解“葵花宝典”第STM32篇之输入捕获,也就是上文所讲的“吸星大法” 那输入捕获可以用来干嘛呢??这个问题问的好,输入捕获可以用来测量脉冲宽度或者测量频率,假如要捕获一个脉冲的高电平脉宽,我们要怎么做呢??别急哈、、接下来我们从头慢慢的分析到脚、、 据老夫所知:STM32的输入捕获,就是通过检测通道上的边沿信号,在边沿信号发生跳变(比如说突然来个上
[单片机]
基于STM32实现串口的两个分案解析
首先总结一下串口232,422,485 串口232:可双向传输,全双工,最大速率20Kbps,负逻辑电平,-15V~-3V逻辑“1”,+3V~+15V逻辑“0”。 串口422:可双向传输,4线全双工,2线单工。 串口485:可双向传输,4线全双工,2线单工,最大速率10Mb/s,差分信号,发送端:+2V~+6V逻辑“1”,-2V~-6V逻辑“0”,接收端:+200mV逻辑“1”,-200mV逻辑“0”。 对于串口的实现有以两个方案: 方案一,和原子的《例说STM32》一样,首先接收,然后处理,没有消息验证处理,这样就会出现消息覆盖,消息出错后死机,无法明确区分命令,无法及时应答握手信号。方案二,借鉴uC/OSII的消息队列,进
[单片机]