- 博客(20)
- 收藏
- 关注
原创 Flash地址空间的数据读取
目录一、Flash原理二、创建STMcube工程1、选择芯片2、配置定时器3、打开外部时钟4、配置管脚5、设置堆栈大小三、在keil工程下的配置一、Flash原理不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了 1024K 字节。市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片。Flash的编程原理都是只能将1写为0,而不能将0写为1,所以在进行Flash编程前,必须将对应的块
2021-12-31 14:54:22
5413
原创 基于片内Flash的提示音播放程序
目录一、使用DAC输出周期2khz的正弦波1、获取正弦信号2、获取数据3、得到对应的C语言文件二、使用DAC输出数字音频歌曲数据转换为模拟音频波形输出三、总结四、参考链接一、使用DAC输出周期2khz的正弦波1、获取正弦信号建议先用单音音频(比如2000Hz的正弦波)的wav数据进行实验,通过DAC或PCM音频模块能够基本还原出原始正弦波声音后,再用语言/音乐信号进行实验。生成单音正弦波:文件—>新建—>音频文件采样率为2000,因为是2000Hz的正弦波。点击效果——>生
2021-12-29 22:33:27
1438
原创 用STM32F103完成对SD卡的数据读取(fat文件模式)
目录一、SD卡模块介绍1、简介:2、物理结构二、SD卡协议三、代码编写四、实物连线及运行结果一、SD卡模块介绍1、简介:SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小、数据传输速度快、可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机、平板电脑和多媒体播放器等。控制器对 SD 卡进行读写通信操作一般有两种通信接口可选,一种是 SPI 接口,另外一种是 SDIO 接口。2、物理结构一张SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器5 个部分。
2021-12-21 21:58:04
704
原创 用Altium Designer绘制stm32最小系统的电路原理图并完成STM32+SD卡 的系统原理图设计
目录一、安装Altium Designe18二、用AD18绘制stm32最小系统的电路原理图1、新建工程2、添加原理图3、下载并添加元件库4、绘制芯片模块原理图4.1 常见的工具栏介绍4.2 延长管脚4.3 放置网络编号4.4 放置电源和地4.5 搜索并放置其它器件5、绘制其余模块的原理图5.1 指示灯模块5.2 排针模块一、安装Altium Designe18在网上找到AD18的安装包,并且下载安装,具体步骤可以参考以下博客:最新Altium_Designer_Beta_18.7.is AD18安装
2021-12-21 20:23:19
3582
原创 安装Clion2021并完成stm32F103 点亮LED的程序
目录一、CLion环境的安装与配置1、CLion软件介绍2、CLion软件安装2.1 软件下载2.2 软件安装2.3 安装配置 arm-none-eabi-gcc2.4 安装配置 MinGW2.5 安装配置 OpenOCD3、配置CLion3.1 创建一个新的工程3.2 进行设置3.3 CMake配置3.4 Embedded Development配置3.5 配置完成二、工程实现1、在stm32cubemx中配置流水灯2、配置Clion的工程文件3、编写代码3.1 添加代码3.2 编译程序三、运行结果四、总
2021-12-16 00:01:36
300
原创 Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址
目录一、C程序中的一些变量及内存分配1、全局变量2、局部变量3、内存分配4、内存段二、在Ubuntu和Keil中显示变量地址分配一、C程序中的一些变量及内存分配1、全局变量在所有函数外部定义的变量称为全局变量(Global Variable),它的作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件。例如:int a, b; //全局变量void func1(){ //TODO:}float x,y; //全局变量int func2(){ //TODO:
2021-12-15 16:41:21
404
原创 STM32F103C8T6基于HAL库移植uCOS完成任务操作
目录一、使用CubeMX建立STM32F103C8T6HAL库1、配置时钟,选择晶振2、配置SYS3、设置接口4、设置串口5、设置工程二级目录三级目录一、使用CubeMX建立STM32F103C8T6HAL库1、配置时钟,选择晶振2、配置SYS3、设置接口设置PC13为GPIO_Output用于点亮LED灯:4、设置串口设置串口USART1:5、设置工程二级目录三级目录...
2021-12-02 19:14:24
161
原创 基于I2C协议的AHT20温湿度传感器的数据采集及OLED屏显示
一、 I2C协议简介1、何为I2C协议I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。2、软件I2C与硬件I2C所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于
2021-11-25 10:59:05
4239
1
原创 两台PC机之间串口传输文件
目录一、实验目的二、实验器材三、实验步骤3.1 连接线路3.2 发送文件3.3 传输文件成功四、总结一、实验目的将两台笔记本电脑,借助 usb转rs232 模块和杜邦线,建立起串口连接。然后用串口助手等工具软件(带文件传输功能)将一台笔记本上的一个大文件(图片、视频和压缩包软件)传输到另外一台电脑,预算文件大小、波特率和传输时间三者之间的关系,并对比实际传输时间。二、实验器材两台电脑,两个 usb 转 rs232 模块,两条杜邦线三、实验步骤3.1 连接线路将一个串口的TXD与另一个串口的RX
2021-11-18 23:25:40
3137
原创 在Ubuntu下调用opencv库编程显示一张图片并显示字符数据
汉字点阵字库原理汉字编码1、区位码在国标 GD2312—80 中规定,所有的国标汉字及符号分配在一个 94 行、94 列的方阵中,方阵的每一行称为一个“区”,编号为 01 区到 94 区,每一列称为一个“位”,编号为01 位到 94 位,方阵中的每一个汉字和符号所在的区号和位号组合在一起形成的四个阿拉伯数字就是它们的“区位码”。区位码的前两位是它的区号,后两位是它的位号。用区位码就可以唯一地确定一个汉字或符号,反过来说,任何一个汉字或符号也都对应着一个唯一的区位码。汉字“母”字的区位码是 3624,表
2021-11-17 16:35:51
224
原创 HAL 库中用中断方式实现按键控制LED
目录一、关于中断外部中断GPIO引脚的外部中断二、实验内容与实验过程1、实验内容2、实验过程2.1 创建工程2.2 代码编写2.3 烧录程序2.4 运行结果三、总结四、参考资料一、关于中断有关中断的简介在我上一篇博客:利用串口中断方式实现完成STM32的USART串口通讯程序已经有所提及了,在这里我再补充几个。外部中断什么是外部中断?举个例子:比如你今天有个快递,快递一般放在前台或是门卫。你有两种方法,1、不停问前台,你的快递到了没有;2、等快递到了,让前台告诉你。前者就是轮询,后者就是外部中断
2021-11-05 18:51:35
3074
原创 利用串口中断方式实现完成STM32的USART串口通讯程序
目录一、USART、串口通信与中断方式简介USART简介串口通信简介中断方式简介二、实验内容与实验过程1、实验内容2、实验过程2.1 代码准备2.2 代码修改2.3 烧录程序2.4 运行结果三、总结四、参考链接一、USART、串口通信与中断方式简介USART简介通用同步异步收发器(Universal Synchronous Asynchronous Receiver and Transmitter)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART(U
2021-11-05 16:08:16
3024
原创 STM32采用串口DMA方式以高速率向上位机连续发送数据
这里写自定义目录标题STM32采用串口DMA方式以高速率向上位机连续发送数据关于DMADMA的基本定义DMA的传输方式DMA的传输参数DMA的主要特征DMA工作框图HAL库中的DMA函数利用STM32CubeMX中创建工程并运行在STM32CubeMX中创建工程并配置参数在Keil中添加代码并生成hex文件烧录程序并运行总结参考链接:STM32采用串口DMA方式以高速率向上位机连续发送数据关于DMADMA的基本定义DMA,全称Direct Memory Access,即直接存储器访问。DMA传输将
2021-11-04 17:17:48
2282
原创 在 stm32CubeMX下生成程序完成流水灯以及完成STM32的USART串口通讯程序实现STM32系统给上位机(win10)连续发送“hello windows”
一、STM32CubeMX简介及安装STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用,提高开发效率。STM32CubeMX几乎覆盖了STM32 全系列芯片。在CubeMX上,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等 省去了我们配置各种外设的时间,大大的节省了时间..
2021-10-27 09:40:57
846
原创 STM32F103寄存器方式点亮LED流水灯
GPIO_Mode_AIN:模拟输入模式GPIO_Mode_IN_FLOATING:浮空输入模式GPIO_Mode_IPD:下拉输入模式GPIO_Mode_IPU:上拉输入模式GPIO_Mode_Out_OD:通用开漏输出模式GPIO_Mode_Out_PP:通用推挽输出模式GPIO_Mode_AF_OD:复用开漏输出模式GPIO_Mode_AF_PP:复用推挽输出模式
2021-10-23 23:50:03
2575
原创 STM32的C与汇编语言混合编程
一、在C语言中调用汇编语言函数1、首先创建一个工程test2。新建工程和在工程中添加代码详情可以参考我之前的一个博客:https://blog.csdn.net/shutupbb/article/details/120562944?spm=1001.2014.3001.55012、在test2中添加C语言。此次程序的功能为传入一个整型数x,函数运行后返回整型数 x+100。首先编写一个C语言程序,但在里面声明一下汇编语言的函数。#include<stdio.h>ext
2021-10-12 19:29:33
332
原创 gcc生成静态库和动态库及使用
目录一、静态库与动态库的认识二、生成静态库和动态库1、编写程序2、生成静态库3、生成动态库三、使用静态库和动态库生成可执行文件1、使用静态库生成可执行文件2、使用动态库生成可执行文件四、静态库与动态库生成的文件大小比较一、静态库与动态库的认识 函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程 序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。...
2021-10-12 14:46:11
244
原创 Ubuntu16.04虚拟机下OpenCV3.4.11的安装及使用示例
一、OpenCV的认识及应用OpenCV(开源计算机视觉)是一个主要针对实时计算机视觉的编程函数库。OpenCV的应用领域包括:2D和3D功能工具包 运动估计 面部识别系统 手势识别 人机交互 移动机器人 动作理解 物体识别 分割和识别 实体影像立体视觉:来自两个摄像机的深度感知 运动中的结构(SFM) 运动跟踪 增强现实为了支持上述一些领域,OpenCV包括一个统计机器学习库,其中包含:提升(Boosting) 决策树学习 梯度提升树 期望最大化算法 k最
2021-10-11 08:45:24
1658
原创 Keil环境下创建STM32汇编语言工程分析HEX文件内容并观察ARM寄存器变化情况
一、在Keil环境下创建一个STM32项目1、新建工程点击Project目录下的New uVision Project创建新项目:给文件命名并点击保存:选择芯片时,我们要选择STM32F103VE。首先打开目录STMicroelectronics,然后打开目录STM32F1 Series,再选择其下的STM32F103,最后从中选择出STM32F103VE:CMSIS目录下选择CORE打勾;Device目录下 选择Startup(其中包含了启动文件)打勾...
2021-09-30 12:37:02
363
原创 Ubuntu系统下使用gcc编译C程序与windows平台编译C程序对比以及Ubuntu系统下makefile的应用
目录(一)Ubuntu系统下使用gcc编译C程序1、编写源程序2、gcc编译的一些命令及作用(以编译test.c为例)(1)无选项编译链接(2)选项 -o(3)选项 -E(4)选项 -S(5)选项 -c(6)无选项链接(7)选项-O3、gcc编译步骤(二)windows平台下用Dev-C++编译C程序(三)使用Makefile编译c程序1、Makefile文件编写规则2.编写Makefile文件并编译 (四)总结(一)Ubun...
2021-09-13 18:37:37
329
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人