STM32入门编程总结2

发布时间:2023-06-21  

上手思路,第一步先查芯片datasheet,一切以官网资料为准,可以在STM32 Cube MX软件里选择 ACCESS  TO  MCU  SELECTOR ,在左上角输入 STM32F103C8后,点击 datasheet 自动打开 芯片手册,点击另存为保存到桌面慢慢看。1看封装,2看供电,3看GPIO,4看中断,FLASH大小+USART也瞅瞅看。建议先搜个官方开发板原理图混个脸熟,软件项目文件打开后先编译一遍能否 0 error (s) 0 warning(s)。


最小系统,3.3V供电电路(2.0-3.6V)+复位电路(低电平复位)+8M晶振 + 启动选择电路(BOOT0 、BOOT1)+调试下载SWD接口(PA13、PA14)。


STM32芯片有三种启动方式:1闪存FLASH(BOOT0=0,B00T1=X),这个用的最多,STM32F103C8T6中64K FLASH就是这个FLASH;2 系统存储器启动(BOOT0=1,B00T1=0),用串口给STM32下载程序时用这个方式(仅限于UART1,STM32别的串口不支持下载程序),3 SRAM启动(BOOT0=1,BOOT1=1),芯片内RAM启动,掉电丢失(用的很少)。切换STM32启动方式跳帽后,重新上电才起作用,通着电直接切换无效。


STM32串口下载保姆式教程:

1核实串口助手是否安装好驱动,TXD、RXD短接后能发能收证明串口助手没问题,串口助手调节好3.3V电压;

2先调节好STM32开发板BOOT0=1,BOOT1=0跳帽,然后把串助手的TXD接开发板PA10,RXD接PA9,再通电把串口助手插入电脑USB口;

3打开STM32CubeProgrammer, 选择右上角的“UART”选项(默认是ST-LINK),在下面的Port里选择对应的COM 口,一般那个COM1不是串口助手的,COM3 或者COM4啥的大概率是正确的COM口,点击 Connect成功后会提示绿灯(Conneted),然后打开目标HEX文件下载即可。


注:下载完毕后还需要把BOOT跳帽恢复到BOOT0 = 0,BOOT1=X(0、1均可),才能正常从FLASH里启动程序。平时开发调试用的最多的还是SWD方式连接四根线:VCC、GND、DIO(PA13)、CLK(PA14)。


开发方式,汇编语言很少用了,51、以及STM32的启动文件(STARTUP.A51、startup_stm32f103xb.s)是汇编语言编写的,这俩文件是官方提供,用户一般也不会改这里面的参数;用C语言操作寄存器,太累+耗时间,我听过一个真实的段子,某个工科大学举办电子设计大赛,有个老铁技术很彪悍,不用官方库自己写寄存器,结果因为太耗时间,库还没写完初赛就被淘汰了。。。


标准库开发属于ST官方第一代开发方式,当年32bit MCU刚刚兴起时,其他外国公司只提供寄存器对应地址datasheet,老一辈嵌入式软件工程师英文不太好,对32bit MCU的英文资料都懒得看,ST:“我来我来,不会英语没关系,我给大家翻译成中文参考手册,寄存器太多不好编程?没事儿,ST标准库把常用的外设寄存器都定义配置好,您直接调用对应外设的函数就好”,ST把国内嵌入式软件工程师当大爷伺候,伺候了10年,ST就成了国内32bit MCU界的一哥;HAL库,ST官方第二代开发方式(当前主推HAL库,标准库已经停止维护),HAL是英文单词hardware  abstracTIon  layer首字母缩写,中文直译是“硬件抽象层”,核心目的是提高项目代码的通用性,项目A的代码原来只能在ST的A型号芯片运行,假设A型号芯片缺货,B型号芯片不缺货,如果项目A的代码能够直接在B型号芯片运行多好呀,或者只需要做很小改动就可以在B型号芯片运行,ST盈利方式是靠卖芯片赚钱,ST芯片开发门槛越低,会用ST芯片的工程师越多,则芯片卖得越多。


HAL兼容性,同一个F103系列的不同型号芯片HAL库程序可以直接烧录使用,例如把STM32F103C8T6的程序烧到STM32F103ZET6,同一个F030系列里的不同型号也类似,(前提是项目使用的外设资源两个芯片都有才行),HAL库是巧妇,巧妇难为无米之炊,HAL库没办法运用芯片没有的外设资源。


STM32Cube MX一键创建项目初始化代码,极大降低了配置项目的工作量,在标准库时代,单单是STM32项目文件的各种配置就足已劝退一大波嵌入式小白,在51世界里,一行“P0 = 0xfe;”就足矣点亮一个LED灯,再看标准库的一大堆.h .c文件,倒腾了一上午一编译好几十个error(s)  warning (s),看着就头皮发麻,忙活了半天LED灯也没点亮。。。

用HAL库生成初始化项目代码后,打开用keil编写代码时,所有用户自定义的代码只能在绿色的/* USER CODE BEGIN 1 */

/* USER CODE END 1 */  之间写,否则下次重新配置后就会自动删除。例:   /* USER CODE BEGIN 3 */              

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET);           

/* USER CODE END 3 */

HAL库是大势所趋,HAL库后续的终极目标,类似于java程序,一次编译,到处运行,类似于.txt文档的兼容性,在各个电脑系统上都可以打开。芯片硬件资源越来越丰富,性能越来越强,软件编程的门槛越来越低,我预感ST第三代开发方式是拖拽外设模块搭积木式编程。到那时候,MCU编程这事儿,是个宝宝就会。

.hex文件内部包含了真正烧录到芯片内部的.bin文件+地址信息,如果.bin文件比作水杯里的水,那么.hex文件就是水杯(地址信息)+水(.bin)。

ST-link V2下载器直接连到电脑的USB口更稳妥,中间不要经过USB-hub,实测有时候经过USB-hub会提示“No ST-LINK detected”,中间环节越少,出现幺蛾子的概率越低。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>