用arduino对stm32编程(二)
经过上一篇搭建好自己的硬件平台后就开始准备愉快的编程了,但是想用它开发产品还是得弄清楚它上电运行的所有流程。直接开始吧,在keil中用startup_stm32xx.s文件开始初始化,最后调用main函数。在arduino中能找到STM32\tools\CMSIS\5.5.1\Device\ARM\ARMCM3\Source\GCC\startup_ARMCM3.S和startup_ARMCM3.c两个文件,用哪个初始化还是没搞清楚,它们最后都会调用_start函数,在startup_ARMCM3.c中能够找到如下定义
extern void _start (void) __attribute__((noreturn)); /* PreeMain (C library entry point) */
也就是直接调用premain函数。
在STM32\hardware\stm32\1.6.1\cores\arduino\main.cpp中有premain和main两个函数
__attribute__((constructor(101))) void premain()
{
// Required by FreeRTOS, see http://www.freertos.org/RTOS-Cortex-M3-M4.html
#ifdef NVIC_PRIORITYGROUP_4
HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
#endif
#if (__CORTEX_M == 0x07U)
// Defined in CMSIS core_cm7.h
#ifndef I_CACHE_DISABLED
SCB_EnableICache();
#endif
#ifndef D_CACHE_DISABLED
SCB_EnableDCache();
#endif
#endif
init(); (调用hal库进行初始化外设、系统时钟、USBcdc)
}
int main(void)
{
initVariant(); (空)
setup(); (应用程序setup调用接口)
for (;;) {
#if defined(CORE_CALLBACK)
CoreCallback();
#endif
loop(); (应用程序loop调用接口)
if (serialEventRun) { (如果有串口事件,进行串口处理,可见默认的串口处理是个循环扫描处理方法)
serialEventRun();
}
}
return 0;
}
到此为止我们就可以放心的用hal库函数进行编程了。
用arduino对stm32编程(二)相关推荐
- 用arduino对stm32编程(一)
本文主要分析stm32duino文件和自建stm32开发板的过程. 一.开发环境 开发板:xx(未知,用别人买的山寨板mini_stm32) stm32:stm32f103rct6 arduino版本 ...
- Arduino处理STM32中的多个串口通讯问题
简 介: 对于在Arduino下开发STM32的程序,对于STM32所具有的三个硬件USART进行测测试.结果显示可以使用这些串口完成相应的数据的输入与输出.但是涉及到以下两个问题,还没有得到解决:问 ...
- SimpleFOC移植STM32(二)—— 开环控制
目录 注意事项 一.硬件介绍 1.1.硬件准备 1.1.1.SimpleMotor方案 1.1.2.SimpleFOCShield V2.0.3方案 1.2.硬件连接 1.2.1.原理图 1.2.2. ...
- 基于标准库函数与基于HAL库函数的stm32编程方式
文章目录 基于标准库函数与基于HAL库函数的stm32编程方式 一.基于标准库 1. 介绍 2. 库函数的STM32串口程序编写 二.基于HAL库 1.介绍 2.HAL库STM32串口程序编写 三.差 ...
- 基于标准库函数与基于HAL库函数的stm32编程方式对比
基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...
- 在Arduino 完成STM32板子的串口通信程序
文章目录 要求 一.软件安装 二.编译及烧录 三.结果 四.标准库函数与HAL库函数的stm32编程方式差异 五.国人版的MCU集成开发平台 要求 安装 Ardunio IDE 和相关软件支持库,在A ...
- stm32编程入门_电子设计与单片机编程书籍资料推荐
有些同学让我推荐些入门书籍,尝试写写: 注:请多看下目录与介绍,网络上也有一些读书笔记和推荐,自行判断是否符合现有层次和水平,再决定是否购买. 针对零基础.非专业的电子爱好者,我的推荐学习步骤是: 自 ...
- STM32F103C8T6在Arduino IDE里编程
前言 时代在进步,极客们手上的单片机也从古老的51.PIC变成了AVR.STM32,也出现了各种便捷的开发工具,例如盛极一时的Arduino;不过Atmega328所属的AVR单片机,终究还是老点了, ...
- arduino和stm32哪个更好学?
信很多电子爱好者面对arduino和stm32都会有个难题,那就是不知道如何选择使用?arduino一直处在火热状态,但是STM32接口多性能强,速度也较快?为什么大家有时候还是喜欢arduino做一 ...
最新文章
- ES6数组的解构赋值( 中)
- 谷歌发布新编程语言,专治SQL各种“不服”
- 洛谷——1064金明的预算方案————有依赖的背包
- 模板库 | 销售管理类报表,邀您提反馈
- linux rac 查询ip,你知道RAC怎么增加管理IP地址吗?
- POJ 3253-Fence Repair(堆)
- SQL Server Profiler(二)
- FBI为车主支招:如何预防汽车黑客
- 双重释放漏洞(来自漏洞战争一书)
- php工具箱的mysql服务_解决php工具箱(phpStudy)Apache启动成功,MySql无法启动的问题...
- 手持式自动锁螺丝机怎么操作使用
- freeradius mysql ad_freeradiusmysql简单配置一例
- node 使用 cnpm
- 物联网嵌入式开发人员面临的5大挑战
- c语言数据结构实训报告总结,数据结构实训心得
- 坐标方位角计算通用公式
- K8S污点容忍度调度
- 歌单详情内容-播放列表 (音乐app项目-第8步)
- 大家如何看待网络安全的重要性?
- Clojure CLR 入门