- 博客(148)
- 资源 (9)
- 收藏
- 关注
原创 基于 Keil MDK 移植 RT-Thread Nano RTOS到华大半导体HC32F030J8TA
本文介绍如何基于Keil MDK开发环境移植RT-Thread NanoRTOS实时系统到华大半导体hc32f030j8ta,并以一个基于HC32F030J8TA芯片的LED基础工程作为示例进行讲解。(源码文档及相关资料可通过文章最后地址获取,含高清pdf版)
2021-12-20 13:44:26 2067 1
原创 基于stm32f103的LM6029-12864液晶屏开发(代码资源地址在最后)
《《《《《正文》》》》》《前言》本文主要介绍128x64点阵液晶屏的开发,本文是基于拓普微LM6029AC液晶模块显示屏开发的,兼容12864cog HFG12864-438液晶屏,驱动芯片为ST7565R ;通信串口采用4SPI;《液晶模块》首先来区别液晶模块和驱动芯片;驱动芯片:其实我在《数码管是如何亮起来的?跟液晶屏又有什么关系?》这篇文章提过,因为128x64的com口以及seg口过多,如果使用单片机IO口直接驱动太费IO资源,二来IO口驱动能力也未必够;因此设计..
2021-11-05 10:17:49 1796
原创 手把手教你开发基于单片机的wifi通信的物联网项目(远程灯控制)
《《《《《正文》》》》》《前言》本文主要介绍开发一个基于单片机的wifi通信远程灯控制的方法,单片机只需支持UART通信即可,以实现最简单的远程控制开关、远程控制亮度,配网后,只需手机联网就可控制联网设备;本文的wifi模块是基于涂鸦智能的wifi模块,主芯片使用STM32F103C8T6;wifi模块与主芯片使用最基本的UART串口实现通信;《WIFI模块申请》1、登入涂鸦智能loT平台;平台网址:https://www.tuya.com/cn/2、...
2021-05-17 13:41:25 4721 8
原创 定义结构体的4种方法
《《《《《正文》》》》》《方法一》先定义结构体类型,再定义结构体变量:structstudent{charno[20];//学号charname[20];//姓名charsex[5];//性别intage;//年龄};structstudentstu1,stu2;此时stu1,stu2为student结构体变量。《方法二》定义结构体类型的同时定义...
2021-05-17 13:19:57 1736
原创 STM32F103之脉冲宽度调制(PWM)模块开发(含呼吸灯实例源代码)
《《《《《正文》》》》》《加载库文件》《硬件设计》看手册可以知道:* TIM3 CH1(PWM1) -> PA6* TIM3 CH2(PWM2) -> PA7* TIM3 CH3(PWM3) -> PB0* TIM3 CH4(PWM4) -> PB1《软件设计》设计4路PWM控制的LED;1、初始化函数,这里需要注意的是下面这个配置项:TIM_...
2021-05-17 13:17:50 1284
原创 STM32F103之时基中断(TIM)模块开发
《《《《《正文》》》》》《前言》定时器在嵌入式中的作用是应该算得了是顶梁柱了,可以用出来产生PWM、可以原来输入捕捉、可以用来计时等等;今天我们来说说定时器的定时功能,就是用定时器产生一个系统的时基,使代码实现能够实现时间片的轮询;《加载库文件》1、按下图步骤加载TIM库文件《软件设计》时基的TIM模块编程流程图:一、中断配置void NvicConfig(void){ NVIC_InitTypeDef NVIC_InitSt...
2021-05-17 13:15:28 1167 4
原创 单片机中断的基本概念
《《《《《正文》》》》》《中断作用》 1、实现实时处理。 2、实现分时操作。 3、进行故障处理。 4、待机状态的唤醒。单片机嵌入式系统的应用中,为了减少电源的功耗,当系统不处理任何事物,处于待机状态时,可以让单片机工作在休眠的低功耗方式。通常,恢复到正常工作方式往往也是利用中断信号来唤醒。《中断处理过程》中断系统中,MCU正常情况下运行的程序称为主程序,把产生申请中断信号的单元和事件称为中断源,由中断源向MCU所发出的申请中断信号称为中断请求,MCU接受中断...
2021-05-17 13:13:32 2677 1
原创 软复位操作《Cortex®-M0+等内核通用》
《《《《《正文》》》》》软件复位就是用一系列指令来模仿硬件复位功能。现在arm越来越强大,就连苹果macbook都用上了arm架构,下面分享基于arm内核的软件复位的方法。只要基于Cortex®-M0+、Cortex®-M3等均可直接调用下面2个函数实现,至于函数名是否一样,需要自己判断,一般在core_cm3.h可以查找到。下面这个就是华大HC32F系列单片机的复位函数,在自己的内核头文件中。《方法》NVIC_SystemReset()函数用来复...
2021-05-17 13:12:02 2774 1
原创 代码对比不同时必备软件Beycomps(附破解版资源)
《《《《《正文》》》》》Beyond Compare可以很方便地对比出两份源代码文件之间的不同之处,相差的每一个字节用颜色加以表示,查看方便,支持多种规则对比。Beyond Compare选择最好的方法来突出不同之处,文本文件可以用语法高亮和设置比较规则的方法进行查看和编辑,适用于用于文档、源代码和HTML。用于代码对比:用于hex文件对比:资源地址:链接:https://pan.baidu.com/s/1nstOSx-X9kt-2V9H96...
2021-05-17 13:09:27 868
原创 STM32F103之systick延时(SYSTICK)模块开发
《《《《《正文》》》》》建议先看SYStick的原理请看:一文透析SYSTICK的寄存器下面做一个基于systick的延时模块开发:第一步:当然是时钟的选择,配置函数在misc.c中:/** * @brief Configures the SysTick clock source. * @param SysTick_CLKSource: specifies the SysTick clock source. * This parameter can be ...
2021-05-05 11:04:36 940
原创 一文透析SYSTICK的寄存器
《《《《《正文》》》》》《什么是systick?》这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。它是集成在内核里,并不是外扩的功能模块,因此它具有很高的通用性;《systick的作用》在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。要...
2021-05-05 11:02:09 1036
原创 一文搞定数码管的软件开发(源代码获取见底部)
《《《《《正文》》》》》建议先看数码管的显示原理这篇文章:数码管是如何亮起来的?跟液晶屏又有什么关系?《硬件设计》4个Com ,8个seg,共阴极设计方案!seg0-seg7对应a、b。。。f、g、dp(小数点)。《软件设计》一、宏定义COM 和SEG的输出操作 //需用户配置///**************************************//此处调用GPIO控制函数头文件#include "gpio.h" ...
2021-04-30 15:15:12 931 1
原创 数码管是如何亮起来的?跟液晶屏又有什么关系?
《《《《《正文》》》》》《显示原理》数码管是由多段发光二极管排布而成的,而其中的发光二极管显示原理与常规的LED点亮熄灭没有区别,一般的一个数码管由7段发光二极管构成,而8段数码管也只是多了一段小数点,其他基本一样,如下图;所以一个数码管,其实就是7段或者8段独立的LED组成的,通过软件控制每段LED来组合显示数据。《SEG口的共阳/阴极》说到LED的控制,软件会根据LED硬件的设计在点亮LED的电平上有所不同,比如下图LED电路:LED的阳极上拉VDD电压,则点亮L...
2021-04-29 19:17:55 1821
原创 SPI的CPOL(时钟极性)、CPHA(时钟相位)的意义
《《《《《正文》》》》》为什么单独拿这个来说,是因为这个很重要,往往只要告诉你是SPI,以及这个2个参数,你就要知道怎么写通信代码了!这样才是一个合格的spi程序员。我们知道,SPI总线上的数据什么时候获取有效是根据CLK的变化沿来决定,但一次CLK变化沿是有2个时间点的,因此需要双方先规定选择哪个变化沿,包括CLK的起始电平,所以这个是非常重要的东西;SPI 的工作时序模式由 CPOL(Clock Polarity,时钟极性)和 CPHA(Clock Phase,时钟相位...
2021-04-28 09:54:44 4099
原创 5个函数搞定IO口模拟SPI通信
《《《《《正文》》》》》添加模块的第一件事当然是要知道支持什么通信,上面就是一个支持SPI的模块,手册中都会有时序图,包括一些参数的要求,这里只做SPI的编程思路,以下代码主要提供一个编程思路;拿到这个波形时序图就基本可以开始写了;确定CPOL=0、及CPHA=1;即CLK极性为低,第二个CLK时钟沿变化采样数据;《初始化IO函数》void BSP_SPI_Init(void){ Gpio_InitIO(SPI_NSS_GPIO,SPI_CS_PIN,...
2021-04-28 09:53:54 2331
原创 一文搞懂SPI的传输时序
《《《《《正文》》》》》《SPI概念》SPI(Serial Peripheral Interface,串行外设接口)是一种高速、全双工、同步通信总线,常用于短距离通讯,主要应用于 EEPROM、FLASH、实时时钟、AD 转换器、还有数字信号处理器和数字信号解码器之间。SPI 一般使用 4 根线通信(当然也有3根的,本质上没有区别,主要区别在于时序组合的意义不同),如下图所示: MOSI –主机输出 / 从机输入数据线(SPI Bus Master Output/Slave In...
2021-04-28 09:53:01 2328
原创 使用IO口模拟PWM设计呼吸灯
《《《《《正文》》》》》《硬件设计》控制灯的IO口接芯片即可;《软件架构》《软件设计》我的呼吸灯功能由2个函数实现,一个函数是IO模拟PWM产生波形;另一个函数是控制占空比的改变快慢及大小;他们之间用一个可更改的占空比变量联系;可更改的占空比变量:volatileuint16_tpwm_duty=0u;//占空比1、设计IO模拟PWM波形函数该函数需要被周期调用,这样是为了可以对时间进行精确的计时,从而实现对占空比的...
2021-04-26 11:13:09 2361 6
原创 关于PWM的一些事
《《《《《正文》》》》》《PWM概念》PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,例如方波的占空比就是50%,下图为占空比25%的波形;《实现PWM的方法》1、利用IO模拟产生PWM波形。这个就是利用软件中的时...
2021-04-26 11:11:53 789
原创 STM32F103调试串口(USART)模块开发(内含Printf重定向函数说明及模块代码资源)
《《《《《正文》》》》》《前言》基于UART的串口在实际项目中的应用相当广泛,包括wifi、can、lin等均可使用uart进行通信,方便且成本低;而uart串口功能不仅仅体现在产品使用功能上,在开发调试阶段更是一个必不可少的调试助手。今天就来构建一个基于uart的调试串口功能模块;开发需求:使用stm32f103的usart模块开发一个具有发送任意字符串的调试串口功能的模块;相关代码获取地址:https://pan.baidu.com/s/1zyrOF18W...
2021-04-17 21:27:45 2232 2
原创 STM32F103之指示灯(LED)模块开发(大结局献上流水灯视频)
《《《《《正文》》》》》《硬件设计》原理图:GPIO引脚 LED1 PA11 LED2 PA12 LED3 PB9 LED4 PB8 《加载GPIO库文件》1、按下图步骤加载GPIO库文件(环境搭建已经写过了,这里不多说明)2、这里多说几句,打开stm32f10x_gpio.h,看里面的全局函数。学点英语,看全局函数的命名你都能知道函数的作用了,这是一个使用库函数的技巧。《软件设计》...
2021-04-16 09:25:47 1171
原创 谈谈内部Flash模拟eeprom的一些问题
《《《《《正文》》》》》《FLASH的缺点》说到flash大家可能更加熟悉eeprom,典型的有24Cxx,eeprom的操作没有什么限制,想写就写,想读就读,不用擦除,数据都可以覆盖,而且支持字节操作,一般的擦写次数都达到了百万级别,下面是24Cxx的参数:而内部flash的操作限制就多了,写操作之前必须擦除操作,擦除操作也是有最小单位限制的;flash的擦写次数一般很少,而且因为是块擦除,擦除也很耗时间,例子参数如下图:《FLASH的操作规则》...
2021-04-14 17:33:59 1221
原创 分享3种bootload的思路方法
《《《《《正文》》》》》《前言》自己曾经的一个车上can总线的项目,因为是项目前期,客户也只是要几个demo件,于是我为了速战速决,做了个不带bootload的样件,没想到的是,客户要了300多的样件,当时发完货,我就知道完了,果不其然,几个月后,出现了一些需求的对接错误及更改,别人主机bootload在线就可以升级,我的没做bootload,于是我被派出去烧程序了!好在那次的工程车没有发往全国各种,不然真的全国飞去烧程序了!在实际项目开发中,因功能更改或bug修正等原...
2021-04-12 17:59:10 3073
原创 别再用Keil看代码了,分享一款必备的代码浏览器Source Insight(内附资源下载)
《《《《《正文》》》》》《Source Insignht》最近发现有些初入嵌入式的攻城狮看代码是用IDE看的,例如在Keil里看,是不是很难受?!费神、费时还健忘;不过话说回来,当年我入门的时候就是这么看的,也算走了几个月的弯路;所以写这篇给初入者,让攻城狮在看代码的路上少走点弯路;今天分享一款浏览代码的必备神奇,Source Insignht代码浏览器;当然它的功能比你想象的强大,牛逼的人是可以用它写代码,分析软件架构的;而今天我们只把他用来看全代码。《资源下载》百度...
2021-04-12 17:56:36 2055
原创 UART\串口\TTL\RS-232\RS-485的区别
《《《《《正文》》》》》《串口》串口是指物理上(硬件)的接口形式,就像USB接口,以及线下很流行的type-C接口,所以它是一个遵循某一类似通信协议的统称,UART、TTL、RS232、RS485都遵循同一类似的通信协议,就统称为串口。《UART》UART全称是通用异步收发器(Universal Asynchronous Receiver/Transmitter)。它是一个用于收发数据的集成逻辑电路,相当于一个电路模块,能嵌入在芯片里拥有自己的功能模块,所以UART是指一个能...
2021-04-05 11:50:15 850
原创 嵌入式C语言优化技巧
《《《《《正文》》》》》《变量类型》不同类型的数据生成的代码长度会不同,变量类型范围越小自然运行速度越快,占用的内存也会越小。所以能定义短类型的变量就不要定义长类型的变量,比如能用char定义就不要用int定义了;还有能不用float就不用float类型变量;当然这些前提是你的数据类型够用;再则变量的赋值不要超过变量的赋值,C编译器一般不报错,程序却能正常的运行,这个问题就很难查了。《避免使用标准库》虽然标准库能加快开发进度,但是因为标准库是考虑到用户所有可能情况所开发的代码...
2021-04-04 11:42:51 790
原创 联合体union能解决什么问题?
《《《《《正文》》》》》《结构体的不足》在C语言中,如果要你描述一辆车的属性,最快最简洁的方法就是构建结构体:struct car_info{char*logo;//品牌 long country; //国家intprice; //价格chartype;//类型};如上定义的结构体就可以很方便的描述一辆车的信息,而且多辆车的话只需新增一个car_info定义的变量而已,方便且简洁明了!如果后续还增加车的属性的话,只需在结构体...
2021-04-03 14:37:25 768
原创 嵌入式程序跑飞的几个原因
《《《《《正文》》》》》作为嵌入式程序员,我想程序跑飞应该不陌生吧?!尤其在前期开发调试阶段,程序九重天都能飞!而且跑飞很难查找原因,基于程序跑飞的原因复杂且五花八门,我也只能分享几个自己常常遇到的跑飞的原因,也当提供排查跑飞的思路方向!《看门狗时间太短》有些底层IDE配置生成的的工程可能默认看门狗开启,且时间很短,往往满足不了我们初始化阶段的时间或者while死循环的最长周期,导致复位。《带while的条件》如果在程序中while某个条件,比如外部状态、或者变量,...
2021-04-03 09:13:29 1280 3
原创 开漏输出和推挽输出的区别?
《《《《正文》》》》》《理解三极管的原理》如下图,以NPN三极管为例:它是一种电流控制型元器件,即基极B的输出输出电流可以实现对元器件的控制。所以可以进一步理解为基极B为控制端,集电极C为输入端,发射极E为输出端,这里的输入输出指电流方向!当控制端(基极B)有电流输入时,就会有电流从输入端(集电极C)流入,并且从输出端(发射极E)流出,这样就起到了电流控制元器件的效果!如下图(红色为电流方向):而PNP管正好相反,当有电流从控制端流出时,就会有电流从输入端流...
2021-04-01 13:09:53 1959
原创 Beycomps下载方法
链接:https://pan.baidu.com/s/1nstOSx-X9kt-2V9H96OQJA关注公众号,发送1234获取提取码!
2021-04-01 08:20:19 821
原创 source insight V4 下载方法
链接:https://pan.baidu.com/s/14Rw55O9SV09oG2TFNqqQVA关注公众号,发送1234获取提取码!
2021-04-01 08:15:59 728
原创 ST-LINK官方驱动下载方法
链接:https://pan.baidu.com/s/1grhD_JzrMKzymsiJpUxrrg关注公众号,发送1234获取提取码!
2021-03-31 20:25:33 1492 1
原创 嵌入式提高CPU利用率的编程方法(以按键消抖为实例)
《《《《《正文》》》》》最初,我在按键消抖软件策略上的实现方法是获取按键电平后,延时一段时间后,再去判断按键电平,如果2次电平相同就确定为消抖成功,最后的电平就可作为判断按键操作的依据。大致伪代码如下: void main(void) { Key_Init(); //底层初始化 while(1) { KeyIO_1 = GetKeyIO(); delay_ms(100); //延时50ms函数 K...
2021-03-30 20:14:31 941
原创 Keil.STM32F1xx_DFP.1.0.5.pack获取方法
链接:https://pan.baidu.com/s/130HpzbGCWMQ_f6mPbPomlw关注公众号,发送1234获取提取码!
2021-03-29 19:17:12 3468 7
原创 裸机系统用前后台系统还是轮询系统?
《《《《《正文》》》》》轮询系统==》就是在死循环里顺序的做各种事情!大概代码如下图1-1;这个适用于只需顺序执行事务且不需要外部事件来驱动事务的系统,比如仅仅实现LED翻转的系统,使用轮询系统来编程会很完美!图1-1intmain(void){ //硬件相关初始化 HardWareInit(); for (;;) { //处理事情1 Something1(); //处理事情2 ...
2021-03-29 11:09:50 868
原创 KIEl的kengen获取方法
链接:https://pan.baidu.com/s/1Y7BNfaUzojill_v8_OAT2A关注公众号,发送1234获取提取码!
2021-03-28 23:19:55 740
原创 Keil5.26获取方法
链接:https://pan.baidu.com/s/1vz6UjCqh4gR1-wJmsRNeeA关注公众号,发送1234获取提取码!
2021-03-28 23:01:22 850
原创 先学STM8,还是先学STM32?
《正文开始》声明:本人是偏软件的,所以以下给出的分享是偏软件的角度。只想看总结的话就跳到最后! 写这篇文章的灵感来自于因为最近全球芯片紧缺,公司很多产品的芯片都拿不到,没的办法,只能启用国产的,这就涉及到底层移植的工作,去年12月到现在,我一直在弄移植老产品到国产芯片上,目前还在移植,已经5个项目了,这个工作难就难在底层的配置,那跟今天的问题有什么关系?往下看!首先不管先学哪个,你最终的目的肯定不是仅仅局限于STM,而是往后市场上千万芯片中被你老板选中的那款芯片...
2021-03-28 17:28:31 927
原创 教你如何快速了解一款芯片的时钟系统
时钟在芯片运行中的地位如同心脏在人体中的地位。所以好代码的前提自然需要一个配置正确的时钟!时钟乱了,代码九重天都能飞上去!但是一款芯片的时钟系统是复杂的,我们需要时间去了解,尤其在涉及到带睡眠唤醒的产品,时钟在这个工程中的操作尤为重要,弄不好就醒不过来了!或者时钟错乱等都会发生。今天分享如何快速的了解一款芯片的时钟系统,那就是看时钟图!既然看图,就要对图符号要了解!下面来了解一下,以下并不是死规定,只是大部分适用;1、表示外部时钟...
2021-03-25 15:28:35 1014
原创 比特率和波特率的区别
(模块全代码获取方式,关注微信公号,发送switch)关注微信公众号 (airX嵌入式),获取更多项目经验!1.比特率 比特率(bitrate)又称传信率、信息传输速率(简称信息速率,informationrate)。其定义是:通信线路(或系统)单位时间(每秒)内传输的信息量,即每秒能传输的二进制位数,通常用Rb表示,其单位是比特/秒(bit/s或b/s,英文缩略语为bps)。 在二进制系统中,信息速率(比特率)与信号速率(波特率)相等,例如,当系统以每秒50个二进制符...
2021-03-24 13:25:20 887
原创 图文通透极其广泛的UART
(模块全代码获取方式,关注微信公号,发送switch)关注微信公众号 (airX嵌入式),获取更多项目经验!一、何为UART通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议,在嵌入式领域应用的非常广泛。Can、lin、嵌入式wifi模块等都可以使用uart进行通信。其实就是2根线,利用高低电平的时序一根收,一根发进行双向通信!当然地要接的!所以应该是3线!二、通信原理.
2021-03-24 13:22:16 928
基于Renesas芯片的TH06C温湿度的嵌入式开发pdf_V1.0.zip
2020-03-04
LIN项目代码 .rar
2020-02-22
AP4_for_RL78_EC__V10500.exe
2020-01-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人