经过上一篇搭建好自己的硬件平台后就开始准备愉快的编程了,但是想用它开发产品还是得弄清楚它上电运行的所有流程。直接开始吧,在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编程(二)相关推荐

  1. 用arduino对stm32编程(一)

    本文主要分析stm32duino文件和自建stm32开发板的过程. 一.开发环境 开发板:xx(未知,用别人买的山寨板mini_stm32) stm32:stm32f103rct6 arduino版本 ...

  2. Arduino处理STM32中的多个串口通讯问题

    简 介: 对于在Arduino下开发STM32的程序,对于STM32所具有的三个硬件USART进行测测试.结果显示可以使用这些串口完成相应的数据的输入与输出.但是涉及到以下两个问题,还没有得到解决:问 ...

  3. SimpleFOC移植STM32(二)—— 开环控制

    目录 注意事项 一.硬件介绍 1.1.硬件准备 1.1.1.SimpleMotor方案 1.1.2.SimpleFOCShield V2.0.3方案 1.2.硬件连接 1.2.1.原理图 1.2.2. ...

  4. 基于标准库函数与基于HAL库函数的stm32编程方式

    文章目录 基于标准库函数与基于HAL库函数的stm32编程方式 一.基于标准库 1. 介绍 2. 库函数的STM32串口程序编写 二.基于HAL库 1.介绍 2.HAL库STM32串口程序编写 三.差 ...

  5. 基于标准库函数与基于HAL库函数的stm32编程方式对比

    基于标准库函数与基于HAL库函数的stm32编程方式对比 一.标准库函数 二.HAL库函数 三.差异 四.stdunio IDE试玩 参考资料 一.标准库函数 1.标准库的解释 标准外设库(Stand ...

  6. 在Arduino 完成STM32板子的串口通信程序

    文章目录 要求 一.软件安装 二.编译及烧录 三.结果 四.标准库函数与HAL库函数的stm32编程方式差异 五.国人版的MCU集成开发平台 要求 安装 Ardunio IDE 和相关软件支持库,在A ...

  7. stm32编程入门_电子设计与单片机编程书籍资料推荐

    有些同学让我推荐些入门书籍,尝试写写: 注:请多看下目录与介绍,网络上也有一些读书笔记和推荐,自行判断是否符合现有层次和水平,再决定是否购买. 针对零基础.非专业的电子爱好者,我的推荐学习步骤是: 自 ...

  8. STM32F103C8T6在Arduino IDE里编程

    前言 时代在进步,极客们手上的单片机也从古老的51.PIC变成了AVR.STM32,也出现了各种便捷的开发工具,例如盛极一时的Arduino;不过Atmega328所属的AVR单片机,终究还是老点了, ...

  9. arduino和stm32哪个更好学?

    信很多电子爱好者面对arduino和stm32都会有个难题,那就是不知道如何选择使用?arduino一直处在火热状态,但是STM32接口多性能强,速度也较快?为什么大家有时候还是喜欢arduino做一 ...

最新文章

  1. ES6数组的解构赋值( 中)
  2. 谷歌发布新编程语言,专治SQL各种“不服”
  3. 洛谷——1064金明的预算方案————有依赖的背包
  4. 模板库 | 销售管理类报表,邀您提反馈
  5. linux rac 查询ip,你知道RAC怎么增加管理IP地址吗?
  6. POJ 3253-Fence Repair(堆)
  7. SQL Server Profiler(二)
  8. FBI为车主支招:如何预防汽车黑客
  9. 双重释放漏洞(来自漏洞战争一书)
  10. php工具箱的mysql服务_解决php工具箱(phpStudy)Apache启动成功,MySql无法启动的问题...
  11. 手持式自动锁螺丝机怎么操作使用
  12. freeradius mysql ad_freeradiusmysql简单配置一例
  13. node 使用 cnpm
  14. 物联网嵌入式开发人员面临的5大挑战
  15. c语言数据结构实训报告总结,数据结构实训心得
  16. 坐标方位角计算通用公式
  17. K8S污点容忍度调度
  18. 歌单详情内容-播放列表 (音乐app项目-第8步)
  19. 大家如何看待网络安全的重要性?
  20. Clojure CLR 入门

热门文章

  1. iOS/Android 微信及浏览器中唤起本地 APP
  2. 问大家一个问题,如何用1万元创业,每天利润达到500元?
  3. openSSL 生成证书 (三级_证书链) linux
  4. 系统安全-Windows下的注册表操作
  5. python 频繁项集_频繁项集算法Eclat
  6. 【笔记】NVM安装使用
  7. 抗病毒面料之外,安奈儿价值内核彰显
  8. 运用JQuery实现全选,和取消的操作
  9. PTA 1069 微博转发抽奖(20points)
  10. 有关 2008年春运