推荐阅读最新更新时间:2024-03-16 16:20
STM32L431之MDK-ARM单步调试错乱
芯片默认使用MSI,频率只有4M,现在需要改成最大时钟80M。一个简单的程序如下: void SystemClock_Init(void){ /* enable HSE */ RCC- CR |= 0x00010000U; while (0 == (RCC- CR & 0x00020000U)); /* configure PLL */ RCC- PLLCFGR = (3 0) | (3 4) | (80 8) | (1 16) | (0 17) | (1 20) | (1 21) | (1 24) | (0 25); /* Fvco = (8M) * (80/4) = 160M,
[单片机]
STM32 KEIL MDK 本地时间和Unix timestamp相互转换
//时间测试,将unix timestamp 和本地时间进行转换 //0x5a603bfe 北京时间 2018/1/18 14:17:34 /* 下面打印是的格林威治标准时间 年:118 月:0 日:18 时:6 分:17 秒:34 格林威治标准时间比北京时间晚8个小时 */ void time_test(void) { //将unix timestamp 转为本地时间 struct tm *gm_date; time_t seconds=0x5a603bfe;//unix timestamp gm_date = localtime(&seconds); printf( 年:%d rn ,gm_date-
[单片机]
Realview MDK中编译器对中断处理的过程详解
在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断出来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。 在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常时, ARM核拷贝CPSR寄存器的内容SPSR_ mode 寄存器中,同时设置适当的CPSR 位、改变处理器状态进入ARM 态和处理器模式,从而进入相应的异常模式。在设置中断禁止位禁止相应中断(如果需要)后,ARM核保存返回地址到LR_ mode ,同时设置PC为相应的异
[单片机]
MDK中变量地址重合问题
最近在使用MDK开发LPC2132的一个项目。利用的是MDK自动生成的启动代码,在调试程序的时候,发现了大量的问题: 1. SD卡存储时,内容被覆盖。好在发现是临时变量与全局变量地址重合。 2. 在调试485时,第一次收发数据是正确的,如果更换方向收发时发现,以后的数据都是错误的。花了大量的时间检查应该和软件,没有发现任何问题。也没有看到变量地址重合的现象。最后没办法了,试着用上面问题1遇到的方法更改启动代码的堆栈,问题解决。 所以,总的来说MDK生成的启动代码堆栈的设置是有问题的,一定要更加需要更改!!!
[单片机]
STM32 Keil MDK数据类型定义
/* Copyright (C) ARM Ltd., 1999 */ /* All rights reserved */ /* * RCS $Revision: 138251 $ * Checkin $Date: 2008-10-07 12:02:11 +0100 (Tue, 07 Oct 2008) $ * Revising $Author: agrant $ */ #ifndef __stdint_h #define __stdint_h #ifndef __STDINT_DECLS #define __STDINT_DECLS #undef __CLIBNS #ifdef __cpl
[单片机]
【STM32H7教程】第4章 STM32H7工程模板建立(MDK5)
第4章 STM32H7工程模板建立(MDK5) 本章教程为大家介绍如何创建MDK5工程,配置方法以及经常用到的一些配置项。 4.1 初学者重要提示 4.2 第1步,创建工程文件夹 4.3 第2步,创建新工程 4.4 第3步,设置工程名和工程分组名 4.5 第4步,添加工程文件 4.6 第5步,Target Options配置 4.7 第6步,最后一步验证是否创建成功 4.8 MDK的字体,多核并行编译,语法提示等设置 4.9 总结 4.1 初学者重要提示 KEIL官方有一个专门的MDK上手文档mdk5-getting-started,在MDK的安装目录里面,坛友翻译了整个文档:http
[单片机]
使用C++封装库在MDK上建STM32开发工程
直接上一些片上硬件、一些常用器件的封装库GitHub链接: STM32F4:https://github.com/InfiniteYuan1/STM32F407DriverLib STM32F1:https://github.com/InfiniteYuan1/STM32f103DriverLib 用C++进行嵌入式程序开发,甚至是裸系统程序。开发起来比C语言更方便架构搭建与程序管理。 简单的一个例子使用USART #include USART.h USART com(1,115200); void main() { com test stringrn ; while(1) { } } 使用
[单片机]
一起学mini2440裸机开发(二)--MDK自带的S3C2440.s分析
上一节,咱们在建立工程的时候,默认的是使用MDK自带的启动代码,这些启动代码到底做了什么工作呢?在这里我想探究一下,探究不全没什么事,能看懂个大概就行了。 我先申明一下,其实我并不是头一次学ARM裸机,我先前已经按照韦东山的使用arm-linux-gcc在linux下编译裸机程序的方法走了一遍了,用那个方法的话对以后的uboot移植非常有帮助,但是有一个不方便的就是,使用Linux系统下编译裸机程序,很多自带的库函数不能用,比如print()函数我都不能用,主要是我的水平不行,不会用,其实可以用的。所以现在想认真的再用编译器学一下ARM裸机,裸机学好了,对驱动开发很有帮助的。 所以,很可能我讲的可能细节上照顾不到没接触过A
[单片机]