推荐阅读最新更新时间:2024-11-21 12:28
利用usmart组件对stm32进行调试
一、介绍usmart 二、使用usmart的三个前提 1、封装好正点原子的usmart文件 2、写好串口的hal库回调函数及其中断处理函数 3、是否开启一个定时器中断(最好选是) 开启:1,关闭:0 三、将需要调试的代码usmart_config.c内 首先要包含文件/extern函数,然后放进结构体内 四、在串口调试助手内利用usmart来调试代码 注:带有函数参数的函数调用需要先准备好id
[单片机]
keil 工程下多个C文件之间的关系
例如:有main.c , A.c, B.c, C.c等几个并列的C文件,先运行main.c,其他的C文件怎么运行的,像A.c, B.c, C.c等其他的C文件并没有在main.c中调用,之间怎么联系的。其中main.c下有1.h ,2.h,3.h...,A.c下有1.h,2.h,3.h... (.c后缀是c文件 .h后缀是被调用的库文件) 解析: 在main.c或者main.c调用的.h文件里面extern另外的C文件里面的函数头就可以用了。 例如:你在A.c里面有一个函数是这样的。:void AAA()那么你在main.c文件的开始这样定 义:extern void AAA();你在main.c里面就可以直
[单片机]
Keil 中头文件INTRINS.H的作用
Abstract: 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. Introduction: Intrins.h 内部函数 描述 _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作8051 NOP 指令 _testbit_测试并清零位8051 JBC 指令 函数名: _crol_,_irol_,_lrol_ 原 型: unsigned char _crol_(unsigned char val,unsigned char n); unsign
[单片机]
KEIL C51代码优化详细分析
阅读了《单片机与嵌入式系统应用》2005年第10期杂志《经验交流》栏目的一篇文章《Keil C51对同一端口的连续读取方法》(原文)后,笔者认为该文并未就此问题进行深入准确的分析 文章中提到的两种解决方法并不直接和简单。笔者认为这并非是Keil C51中不能处理对一个端口进行连续读写的问题,而是对Kei1 C51的使用不够熟悉和设计不够细致的问题,因此特撰写本文。 本文中对原文提到的问题,提出了三种不同于原文的解决方法。每种方法都比原文中提到的方法更直接和简单,设计也更规范。(无意批评,请原文作者见谅) 1 问题回顾和分析 原文中提到:在实际工作中遇到对同一端口反复连续读取,Keil C51编译并未达到预期
[单片机]
Keil C51对C语言的关键词扩展之十六:sfr16
sfr16定义一个16位的特殊功能寄存器: sfr16 name = address; name 16位特殊功能寄存器名称 address 16位特殊功能寄存器地址 一些8051系列产品拥有16位的特殊功能寄存器,比如8052使用地址0XCC、0XCD表示定时/计数器2的低字节、高字节。C51编译器提供sfr16数据类型以便将两个8位特殊功能寄存器当做一个16位寄存器来访问。 sfr16只能在小端模式下使用,低字节的地址作为16位特殊功能寄存器的地址: sfr16 T2 = 0xCC; /* Timer 2: T2L 0CCh, T2H 0CDh */ sfr16 RCAP2 = 0xCA
[单片机]
stm32单片机进入休眠(STOP)模式后无法下载程序等问题解决
利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的。往往会出现进入休眠后无法唤醒,导致下一次程序烧不进去。通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点下载,然后松开复位键即可。 我遇到的问题是:误入了stm32(STM32L051C6T6)的STOP模式,又没有写入相应的唤醒方法,导致后续的程序不能下载。使用MDK5 点击load时总会出现No target connected。自己设计的最小系统又没有加入复位键。。。 有以下几种解决办法: 1、可以将单片机的NRST引脚引出来,外接复位键。(关于引脚查看可用ST官方软件STM32cubeMX,很方便) 2、通过IS
[单片机]
基于Keil、STM32,用C++编写流水灯程序
通常来说,在单片机上编程,要么汇编,要么C语言,而用C++进行开发的很少,那么究竟能不能用C++开发单片机呢? 答案是肯定可以的,下面讲讲基于Keil、STM32,用C++编写流水灯程序的一些内容。 1、为什么很少用C++开发单片机 不知道大家对面向过程和面向对象的理解有多少? C语言面向过程的语言,C++是面向对象的编程语言。结合本文来说,面向过程相比面向对象的编程,代码量更小,运行效率更高。 所以,C语言相比C++具有更小代码量、更快的运行速度。 当然,这里是C相对C++而言。其实,汇编相对C而言,具有更小代码量和更快的运行速度。可以参看文章:用 汇编 和 C语言 写流水灯程序有什么不一样? 因为单片机的RAM和Flash资源
[单片机]
MDK5(keil5)环境安装及破解(附MDK5安装包、注册机及F4支持包)
一、安装MDK5 1、创建一个单独的文件夹来作为安装路径(路径不能包含中文) 2、找到MDK安装包,双击安装。安装完成后它会自动在线更新安装包,直接选择关闭,不要在线更新。 最后点击Finish完成安装后,MDK可能会自动弹出Pack Installer的界面 这是更新芯片支持包的界面,可能会出现FIle dowmload failed的错误,关闭即可 3、安装支持包:用不同的芯片就安装不同的支持包,比如F1的、F4的等,也可同时安装多种支持包 二、破解MDK5 1、安装完成后,桌面会出现kei5的图标,右键选择以管理员身份运行,选择左上角的file--》licenseManagement
[单片机]