自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 嵌入式实时操作系统(RTOS)的使用

startup_stm32f103xb.s文件下将PendSV_Handler,SysTick_Handler全部替换为OS_CPU_PendSVHandler、OS_CPU_SysTickHandler。将DEF_ENABLED 改为 DEF_DISABLED,#define APP_TRACE BSP_Ser_Printf 改为 #define APP_TRACE(void)uC_CPU将该文件目录下所有文件添加,打开ARM-Cortex_M3,打开RealView文件,将该目录下所有文件进行添加。

2023-11-27 22:36:18 1628 1

原创 数字温度计,RTC与I2C、OLED的联合使用

选择SPI2,选择SPI2后PB13、PB15分别为SPI2_SCK、SPI2_MOSI,主函数部分与RTC,I2C基本相同,不再赘述,这里只需在while内部进行更改。鉴于OLED部分之前只做了SPI的标准库实现,这里给出HAL库实现。并另外选择三个引脚,为了方便与标准库进行对比,引脚分别命名,如下。数字温度计,RTC与I2C、OLED的联合使用。RTC具体时间设置:设置为当天,便于时间查找。本部分为I2C、OLED、RTC结合即可。main函数内:定义结构体。(一)RTC实现日历输出。

2023-11-25 20:11:20 683

原创 基于标准库的OLED使用

SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32 也有 SPI 接口。SPI(Serial Peripheral interface)是串行外围设备接口,SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。以目前的技术,OLED 的尺寸还难以大型化,但是分辨率确可以做到很高。

2023-11-16 23:54:13 338 1

原创 串口传输及汉字点阵的使用

为了避开ASCII字符中的不可显示字符0000 0000 ~ 0001 1111(十六进制为0 ~ 1F,十进制为0 ~ 31)及空格字符0010 0000(十六进制为20,十进制为32),国标码(又称为交换码)规定表示汉字的范围为(0010 0001,0010 0001) ~ (0111 1110,0111 1110),十六进制为(21,21) ~ (7E,7E),十进制为(33,33) ~ (126,126)(注意,GB类汉字编码为双字节编码)。作用:为每个汉字编一个唯一的代码。

2023-11-16 23:20:28 643 1

原创 基于HAL库的I2C协议实现AHT20温湿度传感器

STM32 的 I2C 片上外设专门负责实现 I2C 通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来,CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地。对于I2C 总线,只使用两条总线线路,一条双向串行数据线(SDA) ,一条串行时钟线(SCL)。

2023-11-13 11:00:44 475

原创 定时器&PWM应用编程

STM32Cube工程设置:除以下部分外,基本与之前一致。STM32Cube设置:除定时器设置外基本与前面一致。(一)基于定时器设置周期为2s的LED周期性地亮-灭。STM32Cube设置:除以下部分外,基本与前面一致。(三)占空比,周期,频率输出。(二)PWM输出实现呼吸灯。定时器&PWM应用编程。

2023-11-04 19:14:17 93 1

原创 基于中断DMA方式的串口通信

(一)目的:当Windows给stm32发送字符串,如“stop”后,stm32暂停发送“hello windows!发送字符串“start”后,stm32继续发送;1、STM32Cube工程创建,基本与前面一致,但在NVIC需先取消Force DMA,再取消下面两个DMA1,这样DMA改用串口中断,便于不定长数据接收。1、STM32Cube工程创建,此部分与上一篇基本一致,不过多赘述。基于中断/DMA方式的串口通信。在main函数前添加如下代码。(三)DMA方式的串口通信。(二)中断方式的串口通信。

2023-10-30 20:52:47 112 1

原创 基于HAL库的DMA串口通信及中断方式的串口通信

DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。​ ②DMA用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。​ ③DMA的作用就是实现数据的直接传输,而去掉了传统数据传输需要CPU寄存器参与的环节。而后关闭中断,进入中断接收回调函数,不再触发接收中断。大致过程是,设置数据存放位置,接收数据长度,然后使能串口接收中断。功能:串口中断接收,以中断方式接收指定长度数据。再然后,串口中断函数处理,直到接收到指定长度数据。

2023-10-25 19:16:06 283

原创 STM32中断方式控制流水灯工作

A0,A1,A2为流水灯,A6为持续输出高电平,A7持续输出低电平,B5作为模拟开关。在main函数里的while(1)里加入以下代码。(一)STM32Cube配置相关项目。STM32中断方式控制流水灯工作。设置EXTI:打钩,然后选择1。3.设置对应GPIO口参数。其余部分与流水库设置一致。

2023-10-24 19:41:42 493

原创 STM32基于HAL库实现流水灯

如下图,添加(PORTA &0X000000000)>>0,(PORTA &0X000000002)>>1,(PORTA &0X000000004)>>1,下载固件库,寻找对应的系列,如我用的STM32F103C8T6,就打开STM331F1系列,在最新或第二新版本前面□打钩,点击install。选择引脚,在对应引脚选择GPIO_Output,我选择的就是PA0,PA1,PA2。设置项目名称,地址(选择安装地址下创建一文件夹),选择Tool为MDK。(一)开发环境搭建(前面已经安装过keil,这里不赘述)

2023-10-23 22:37:51 192

原创 基于外设库的流水灯及通过keil观察GPIO输出波形

点击setup,同样点击方框,然后直接输入GPIOx_IDRy[x,y分别为对应端口和对应引脚,如输入GPIOB_IDR0,则在IDR后出现&0x00000001(即引脚0对应地址)],然后选择type为bit。此时由于文件太多,在对应文件夹里可通过一直按ctrl,鼠标点击对应文件,可一次性将对应文件添加进Group里。然后点击出现窗口里红色x旁边的类似截屏的方框,点击出现的一行空格旁的省略号,将固件库的文件夹位置找到,添加。点击Debug,点击示波器,出现下图界面。同理,创建其他组进行添加,如下图。

2023-10-16 09:59:50 559 1

原创 stm32f103系列寄存器点亮流水灯

可知PC13为低电平输出,则可通过对PC13赋值进而对led开关进行控制。stm32f103系列寄存器点亮流水灯。1.2端口输出(PC13)

2023-10-02 22:36:39 369 1

原创 Ubuntu、stm32常见内存分配方法(如堆、栈、全局变量、局部变量等)

(3)、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。由前面的分析我们知道,代码区和常量区的内容是不允许被修改的,ROM(STM32就是Flash Memory)也是不允许被修改的,所以代码区和常量区的内容编译后存储在ROM中。定义在函数内部的变量称为局部变量(Local Variable),它的作用域仅限于函数内部, 离开该函数的内部就是无效的,再使用就会报错。

2023-10-02 15:26:32 959 1

原创 库的使用与EFF文件格式

函数库分为静态库和动态库,静态库:在程序编译时会被连接到目标代码中,程序运行时不需要静态库。通过ll命令可发现.a文件用量为2720,.so文件用量为7496,静态库比动态库小很多。(2).a与.so文件创建与使用。(1)创建代码sub1.c,sub2.c,sub.h main.c。(1)创建代码hello.h,hello.c,main.c.(1)创建代码A1.c, A2.c, A.h,test.c。2.Linux1下.a与.so库文件的生成与使用。1.gcc生成静态库与动态库。再运行,结果与静态库一致。

2023-10-02 11:08:17 463 1

原创 STM32/C51入门----流水灯

然后点击魔术棒,点击Output,点击Creat HEX,点击OK,在代码输入后点击build或rebuild(即下图3,4)即可生成.hex文件。此后可一直点击下一步,然后点击元件模式,按P,在keywords里输入对应的器件名称:ATM89C51,LED(此处可随便选择颜色)RES。然后再创建C语言文件,如下图,在Traget1 右键点击Source Group 1,Add new item,选择C即可创建。先创建工程,可从左上角文件里点击创建工程,或直接点击开始设计里的创建工程,设置名称。

2023-09-24 13:29:52 1105 1

原创 [嵌入式开发基础]ubuntu系统下用gcc和makefile方式进行C语言编译

本文作为对嵌入式开发常用的在ubuntu系统下进行C语言编译的两种方式进行简单介绍。前置条件:gcc在ubuntu系统下的安装。(二)Windows系统下的C语言编译。代码及运行部分同(一),但编译不一样。要让主程序执行子程序还需创建头文件。C语言文件创建,以简单的除法为例。然后按esc,再按:wq即可保存。编译.c文件,使其可被gcc执行。(三)makefile方式运行。下面是用子程序执行除法过程。2.gcc运行c语言文件。1.安装makefile。(一)gcc环境下编译。

2023-09-14 21:53:26 162 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除