![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
单片机
文章平均质量分 82
明月清风旧
记住你本来的样子
展开
-
【Python】用python实现编译脚本
这个脚本可以自动扫描目录下的.c和.s文件并编译,同时生成hex和bin文件。,可以代替Makefile工作。cortex-m 单片机。原创 2024-04-18 19:02:09 · 266 阅读 · 0 评论 -
【C语言算法】C语言实现信号槽
前段时间使用qt做了个项目,了解到信号槽这种机制,在解耦合和程序设计的方便程度上体现出极度的优雅与从容.现在回到单片机程序开发上来,感受到之前的单片机程序写的还不够优雅,使用函数指针能够实现解耦合,但需要设置回调函数,而且不同的模块设计的回调函数不尽相同,最大的痛点是实现异步调用非常复杂,与优雅二字基本是毫无关联了.本文旨在优雅地实现信号槽机制.原创 2023-04-30 11:49:26 · 593 阅读 · 0 评论 -
STM32关于使用定时器来实现串口通信的整活实验
目录一、整活说明二、原理简介先说接收发送数据优化三、实验条件和目标条件目标四、掉头发环节1.定义串口类2.定义简单宏3.定义私有数据4.init 函数5.其他接口函数6.中断函数7.接口导出五、验证一、整活说明在帮别人做项目的时候,写着代码唱着歌,突然就遇到硬件工程师把线连错了,串口模块连接的不是UART引脚,项目就这样暂停了吗?这能忍吗????这不能忍啊!作为一个资深(咸鱼)软件工程师务必不能被这种小事绊住手脚,项目还是要进行下去,所以就有了这次整活。二、原理简介串口原理就不重复了,直接网上随便一原创 2022-04-23 11:34:43 · 7986 阅读 · 3 评论 -
基于stm32使用NRF24l01广播蓝牙数据
目录前言一、硬件平台二、编写蓝牙兼容代码三、调用四、现象五、总结前言经过分析,发现nrf24l01的无线频段和调制方式和蓝牙是相同的,都是2.4Ghz和高斯键控频移,由此产生了是否可以使用nrf24l01发送蓝牙数据的想法,在网络上搜索发现有人在Arduino上实现了发送蓝牙广播,由此确信使用nrf24l01发送蓝牙数据是可行的。本文章参考了:http://www.github.com/floe/BTLE一、硬件平台为了方便,减少不必要的工作,本文使用正点原子的探索者开发板,并且在《nrf24l0原创 2020-06-25 18:55:04 · 3765 阅读 · 3 评论 -
FreeType移植到 STM32 单片机以支持矢量字体
目录一、准备工作二、复制文件三、添加C文件到Keil中四、修改接口五、调用六、优化七、效果一、准备工作下载Freetype源码 ----- 下载FreeType以移植到Keil 的STM32工程为例移植前的软件环境:1,实现了内存分配函数2,实现了文件系统3,使用了TR-Theard操作系统4,实现了GUI界面,并支持点阵字体的显示5,实现了Unicode,GBK,UTF8字符编码的相互转换二、复制文件解压源码压缩包得到如下文件复制以下文件到单片机工程下如图三、添加C文原创 2020-05-28 21:14:22 · 7438 阅读 · 16 评论 -
使用KEIL下载文件到单片机外置存储器的方法
使用KEIL下载文件到单片机外置存储器给单片机下载程序的原理实用性要解决的难点怎样编写bootloader使用KEIL下载文件给单片机下载程序的原理给单片机下载程序一般有两种方法:1,使用厂家提供的bootloader,使用特定软件通过串口等方式下载二进制文件到单片机的内置flash,这种方法的局限性是只能下载到厂家bootloader定义的存储器上;2,使用调试器通过SWD/JTAG接口...原创 2020-04-02 11:18:18 · 4651 阅读 · 0 评论 -
在keil环境下实现类似linux中 module_exit module_init的效果
这里写自定义目录标题一,设置keil为使用加载文件二,编写链接脚本三,定义module_exit module_init 宏四,编写统一初始化函数五,编写驱动时在文件中加入类似代码六,在main函数中调用在使用keil开发较大的项目时常常存在驱动之间耦合性太大,增加或减少驱动会涉及到对工程中其他部分代码的更改,比如新增一个驱动需要把初始化代码放到main函数中执行,去除一个驱动又需要在main函数中去掉对应的函数调用,本例方法可降低驱动代码之间的耦合性。一,设置keil为使用加载文件二,编写链接脚本原创 2020-05-21 21:54:19 · 868 阅读 · 1 评论 -
RPC(远程过程调用)基于单片机的极简实现
目录一、定义二、应用场景三、验证1、实验条件2、制定协议1)数据传输协议2)函数调用协议3、传输层4、RPC协议解析程序1)从机端程序2)主机端程序5、编写RPC函数1)从机端函数编写2)主机端函数编写6、RPC函数调用示例四、现象一、定义RPC(Remote Procedure Call)远程过程调用。假设一个系统中有两个cpu,暂且称为A和B,分别运行着自己的应用程序,当A执行到某功能时需要B配合才能完成,这在程序里就体现为A需要调用B中的方法。RPC就是实现这种CPU间方法调用的协议。二、应用场原创 2021-05-13 11:59:26 · 2122 阅读 · 0 评论 -
STM32 实现类似手机运行APP的方法(篇五:动态链接)
目录一、简介二、系统程序修改1、添加 sys_api.h 文件2、建立系统API函数表三、APP程序修改1、api_table.s2、sys_api.h3、api调用一、简介动态链接 是一种在运行时链接函数地址的技术,程序运行时在内存中建立函数表,其他程序可以通过这个函数表来调用函数。据我了解,windows、linux使用的动态库就是使用这个方式实现的。由前面几篇文章了解到,单片机环境中app调用系统函数api可以使用 --symdefs=syscall.sym 命令来输出函数符号表,这种方式的缺点原创 2021-03-12 11:55:19 · 3275 阅读 · 8 评论 -
keil环境下实现C语言基本输入输出库
目录一、前言二、编写前的软硬件环境三、分段加载四、头文件编写五、C文件编写1、类型定义、全局变量定义和库初始化2、定义 fopen 函数3、定义 fclose 函数4、定义 fgetc 函数5、定义 fputc 函数6、定义 fread 函数7、定义 fwrite 函数8、定义 fseek 函数9、定义 ftell 函数10、定义 feof 函数11、一些其他函数的定义六、设备文件示例一、前言在基于单片机软件开发一些比较大的项目的时候,难免需要移植一些开源软件,由于开源软件都是基于c语言标准库开发的。由原创 2021-03-10 11:11:54 · 2052 阅读 · 3 评论 -
使用单片机给nrf52832蓝牙芯片软件升级
目录需求原理简单介绍流程电路要求软件编写简要说明1、编写 ram BootLoader2、编写 SWD接口驱动3、编写从机用户程序代码4、编写下载从机程序的代码需求在实际项目中使用MCU+蓝牙芯片的方式给产品添加蓝牙功能,由于蓝牙芯片要跑协议栈和一些用户代码,MCU也要跑应用代码,这样一来软件升级就成了一个棘手的问题,分别给蓝牙芯片和主控MCU做软件升级显然对量产十分不友好。例如:笔者在一个腕表产品的项目中使用了GD32F450+NRF52832的方案,而生产时给蓝牙芯片升级软件非常繁琐,需要在电路板原创 2021-02-14 15:56:06 · 1681 阅读 · 0 评论