首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
keildebug从SystemInit开始
2024-10-19
Keil MDK仿真调试STM32的时候直接进入SystemInit函数
1. 仿真的时候,进入之后 2. 说是main()未定义,可是明明定义了,什么原因?喔,看错了,是--main.对比了一下和正常工厂的配置,都一样,换个jlink V9测试一下吧.换了个ST LINK V2 也不行,看样子是工程的问题喽?屏蔽了一些main()函数的一些代码,发现可以执行到main()了!!!奇哉怪也,难道后面的代码写错了,导致不能仿真到main()??? 3. 最后测试发现,原来是多了一个printf函数,keil MDKb编译的时候没有报错,去掉这行函数解决问题
MDK错误 Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f10x_hd.o). 解决方法
此错误产生的位置在STM32工程所包含的汇编启动代码文件,如下图 熟悉ARM汇编的朋友一定可以看出,这是一个子程序调用语句,而调用的子程序正是SystemInit.出现错误的原因就是汇编器没有在代码之中寻找到SystemInit子程序.所以可以有两种解决方法. 1.在工程C文件内定义SystemInit函数,如下图 这里定义了一个空函数,虽然没有完成任何功能,但是这样做之后输出的汇编代码中就可以寻找到SystemInit子程序. 2.在汇编代码之中注释掉上上图之中用红色方框圈出的子程序调用代码.
STM32时钟初始化函数SystemInit()详解【转】
花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出): 使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23 我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz 函数调用顺序: startup_stm32f10x_cl.s(启动文件) → SystemInit() → SetSysClock () → SetSysClockTo72() 初始化时钟用到的RCC寄存器复位
STM32启动文件详解及SystemInit函数分析(转)
;先在RAM中分配系统使用的栈,RAM的起始地址为0x2000_0000 ;然后在RAM中分配变量使用的堆 ;然后在CODE区(flash)分配中断向量表,flash的起始地址为0x0800_0000,该中断向量表就从这个起始地址开始分配 ;分配完成后,再定义和实现相应的中断函数, ;所有的中断函数全部带有[weak]特性,即弱定义,如果编译器发现在别处文件中定义了同名函数,在链接时用别处的地址进行链接. ;中断函数仅仅实现了Reset_Handler,其他要么是死循环,要么仅仅定义了函数名称
STM32_从SystemInit、__main到main()
STM32 的 SystemInit() 和 __main Author by [YuCloud](https://www.cnblogs.com/yucloud/) 上篇文章 STM32启动代码分析及其汇编学习-ARM 分析了 .S 启动文件 ,这次来研究一下 .S 启动文件之后执行到 main() 的流程 STM32 总体启动顺序 .s启动文件 -> 中断处理函数外部定义 -> SystemInit() -> __main -> SystemCoreClockUpdate -&
stm32 调试时卡在LDR R0, =SystemInit
网上找到的可能的原因 堆栈空间默认的太小 默认startup_stm32f10x_hd.s中 Stack_Size EQU 0x00000400,如果改大之后,可能调试就可以正常运行. 出现最多的情况就是设置的断点过多,可以把断点全部删除试试看,STLink只能设置5个 勾选如图
搭建基于 STM32 和 rt-thread 的开发平台
我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的起点,这样就会每次比从零开始"高一点点". 当然,这里不是没有纠结的.平台毕竟不是最终的产品,平台太弱固然难以支撑创新,但平台太强则臃肿和僵化同样也会限制创新:面对成百上千的类型.接口的时候,即使做一个小玩意儿也要学上一年半载,任何人都会畏惧的.有那个时间,不如自己写一个出来了.所以成功的
KEIL中启动文件详解(汇编语言)
原文在此:http://www.cnblogs.com/mddblog/p/4920063.html 概述 在嵌入式系统中,启动文件是整个系统非常关键的部分,它会进行一些底层的初始化,构建程序运行必要的环境,比如堆栈初始化,变量初始化等.如果启动文件出现错误,则整个系统就跑不起来,因此研究启动文件非常必要. 在keil中,启动文件由汇编代码编写,一般命名为startup_xxx.s,xxx为支持的某种芯片,比如可以是lpc15xx(NXP的LPC15xx系列).MK60D10(飞思卡尔).stm
STM32库函数编程、Keli/MDK、stm32f103zet6
catalogue . Cortex-M3地址空间 . 基于标准外设库的软件开发 . 基于固件库实现串口输出(发送)程序 . 红外接收实验 . 深入分析流水灯例程 . GPIO再举例之按键实验 . 串口通信(USART) . 库函数开发通用流程小结 . DMA传输方式 . STM32 ADC . SysTick(系统滴答定时器) . STM32定时器 0. Cortex-M3地址空间 0x1: MDK中三种linker之间的区别 1. 采用Target对话框中的RAM和ROM地址 采用此方式,需
最简单的STM32入门教程----闪烁LED
本文讲述的是如何从零开始,使用keil建立一个简单的STM32的工程,并闪烁LED灯,给小白看. 第零步,当然首先你得有一个STM32的板子,其IO口上接了一个LED... 第一步,建立一个文件夹0.0 第二步,打开keil,建立工程 在弹出来的对话框中选择你所用的STM32的芯片. 在接下来弹出来的对话框中选择是,这样keil就帮我们建立好了启动文件. 第三步,新建一个main.c文件,并添加到工程中. 点击New按钮,建立一个文本文件. 在建立的文本文件中输入C中的main函数 点击保存 保
如何快速上手使用STM32库函数
一.背景 如前文所述,利用标准库函数的好处在于,可以快速开发,不用去对着数据手册,小心翼翼的一位一位的配置那些繁复的寄存器,因为这些工作意法半导体已经找了一些顶级的工程师帮你做了,杰作既是其库函数.当然,有些代码考虑到低功耗,或者需要极小的ROM,就不能使用库函数,而这即是通常说的,"高度定制化",牺牲开发时间来获取更高代码效率,这个需要自己权衡. 本文以STM32之DMA库函数为例,即如何快速使用STM32库函数做个简述及记录. 二.正文 首先去官网或者论坛下载STM32的官方库,解
nes 红白机模拟器 第3篇 游戏手柄测试 51 STM32
手柄使用的是 CD4021 ,datasheet 上说支持 3V - 15V . 因为手柄是 5V 供电,2440 开发板上是GPIO 3.3V 电平,STM32 GPIO 也是 3.3V (也兼容5V)电平. 所以先在 STM32 上测试能用后,在接到 2440 开发板上. 正好是 8个键值,用来点 8个 LED .按下一个键,就会亮一个灯. c51 : #include <reg52.h> sbit CLK = P2 ^ ; sbit LATCH = P2 ^ ; sbit DAT0 =
STM32启动代码分析 IAR 比较好
stm32启动代码分析 (2012-06-12 09:43:31) 转载▼ 最近开始使用ST的stm32w108芯片(也是一款zigbee芯片).开始看他的启动代码看的晕晕呼呼呼的. 还好在csdn上看到一片文章写的不错,分享下: 文章转载至:http://blog.chinaunix.net/uid-2595338-id-2139588.html,感谢原作者! 使用的芯片是 STM32F103VET,编译器使用 IAR ARM V5.5 设置头文件查找路径,例如: $PROJ_
STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例
我用的是IAR,这个貌似是MDK的,不过很有用,大家可以看一下 ;* 文件名 : startup_stm32f10x_hd.s ;* 库版本 : V3.5.0 ;* 说明: 此文件为STM32F10x高密度设备的MDK工具链的启动文件 ;* 该模块执行以下操作: ;* -设置初始堆栈指针(SP) ;* -设置初始程序计数器(PC)为复位向量,并在执行main函数前初始化系统时钟 ;* -设置向量表入口为异常事件的入口地址 ;* -复位之后处理器为线程模式,优先级为特权级,堆栈设置为MSP主堆栈
熟悉RT-Thread的软硬件环境【RT-Thread学习笔记 1】
软件环境:Win7+MDK4.7.2 硬件环境:STM32F4Discovery 所用OS代码:RT-Thread2.0.0 beta 下载地址: https://github.com/RT-Thread/rt-thread/archive/v2.0.0_beta.zip 解压缩后,使用\rt-thread-2.0.0_beta\bsp\stm32f40x\project.uvproj 进行实验. 没有使用scons和python.不大需要这个东西. 今天只熟悉一下软件环境: 1.RT进入mai
RTS与CTS的含义
====================================我是分割线首先介绍下网上看到的======================================================================================== 一.RS232标准中的RTS与CTS RTS,CTS------请求发送/清除发送,用于半双工时的收发切换,属于辅助流控信号.半双工的意思是说,发的时候不收,收的时候不发.那么怎么区分收发呢?缺省时是DCE向DTE发送数
[stm32] 一个简单的stm32vet6驱动2.4寸240X320的8位并口tft屏DEMO
书接上文: 最近在研究用低速.低RAM的单片机来驱动小LCD或TFT彩屏实现动画效果 首先我用一个16MHz晶振的m0内核的8位单片机nRF51822尝试驱动一个1.77寸的4线SPI屏(128X160), 发现,刷一屏大约要0.8s左右的时间, 具体收录在<1.一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO>中 觉得,如果用72MHz的STM32也许效果会好很多 于是在stm32上做了个类似的版本, 具体收录在<一个简单的stm32vet6驱动的天马4线S
[stm32] 一个简单的stm32vet6驱动的天马4线SPI-1.77寸LCD彩屏DEMO
书接上文<1.一个简单的nRF51822驱动的天马4线SPI-1.77寸LCD彩屏DEMO> 我们发现用16MHz晶振的nRF51822驱动1.77寸的spi速度达不到要求 本节主要采用72MHz的stm32尝试刷屏效果 效果如下: 工程结构如下: 注:整个工程最重要的部分在USR中,其它是必须! 首先是LCD.c: 1.类似与用nRF51822做的彩屏驱动,这里主要的不同点在于引脚的初始化~ 2.同时,为了使刷屏速度更快点,在39~46行将原来的循环拆成了8行命令~ 3.没写的地方和基于nR
[stm32] STM32 Interrupts and events 系统了解(EXTI)及槽型光电开关tp850电路研究
中断和事件 1 嵌套向量中断控制器 特性: ● 68个可屏蔽中断通道(不包含16个Cortex™-M3的中断线):● 16个可编程的优先等级(使用了4位中断优先级):● 低延迟的异常和中断处理:● 电源管理控制:● 系统控制寄存器的实现: 嵌套向量中断控制器(NVIC)和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效地处理晚到的中断.[正版请搜索:beautifulzzzz(看楼主博客园官方博客,享高质量生活)嘻嘻!!!] 1.1 系统嘀嗒(SysTick)校准值寄存器 系统嘀嗒校准值固
[stm32] STM32的通用定时器TIMx系统了解
通用定时器(TIMx) 一.TIMx简介 二.TIMx主要功能 三.TIMx功能描述 3.1 时基单元 3.2 计数器模式 3.3 时钟选择 3.4 捕获/比较通道 3.5 输入捕获模式 3.6 PWM输入模式 3.7 强置输出模式 3.8 输出比较模式 3.9 PWM 模式 3.10 单脉冲模式 四.简单例子理解TIMx 4.1 使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁 4.2 周期控制通用定时器3的2通道,实现1KHz的不同占空比波形,控制LED实现呼
热门专题
java Date工具类
CmsTool 漏洞
docker oauth2 统一认证 image
Rfxpath父子关系
centos7 安装wps2019 无法启动
sql字符串连接函数
如何把下载的ens导入endnote
如何查询weblogic中堵死的线程
抓包生成loadrunner脚本
sql身份证号判断男女
超低损耗spdt天线开关
stm32定时器计算
openvino.dll引发异常
java实现读取sql脚本文件并执行
linux磁盘io高 但是没有进程IO高
eclipse装反编译没效果
linux内核获得设备class
PHP MVC框架路由请求
ubuntu下中文软件 乱码
jquery中ipunt 正则表达式