- 博客(12)
- 收藏
- 关注
原创 GCC背后的故事&C程序常量变量的地址分配
GCC 工具集:核心包括预处理(cpp)、编译(cc1)、汇编(as)、链接(ld)、静态库打包(ar)、目标文件分析(objdump/readelf)等工具,协同完成编译全流程。STM32 地址映射:Flash(0x08000000 起)存代码和常量,RAM(0x20000000 起)存变量、栈、堆,外设寄存器区(0x40000000 起)用于访问硬件。编译流程:源码(.c)经 gcc -c 生成目标文件(.o),再通过链接生成可执行程序,支持静态库(.a)和动态库(.so)两种链接方式。
2025-11-09 22:41:17
637
原创 OLED显示
软件 I2C 也被称作模拟 I2C,它是通过普通的通用输入输出引脚(GPIO,General Purpose Input Output),利用软件编程的方式来模拟实现 I2C 协议规定的时序逻辑以及通信过程。也就是在没有专门硬件 I2C 模块支持的情况下,通过在微控制器的程序中按照 I2C 协议的要求,对相应的 GPIO 引脚进行高低电平的操作以及延时控制等,来模拟出 SCL 和 SDA 信号的变化,进而实现数据的传输和接收。然后添加用于延时的文件Delay.c 和 Delay.h。
2025-11-09 22:10:56
305
原创 定时器与PWM
(1)USB转TTL的连接:USB转TTL模块的TXD、RXD分别接到STM32f103c8t6最小系统板的RX、TX引脚,产看引脚图得:USART_RX、USART_TX分别位于PA10、PA9,所以要连在这两个引脚上,USB转TTL模块的GND接到面包板得负极那一横排。概述:我们选择TIM3第1个通道、TIM4第4个通道这两个通道来输出PWM波,查看对应的引脚定义图可得,TIM3_CH1引脚对应的是PA6,TIM4_CH4引脚对应的是PB9,因此只能在这两个引脚处点灯。Serial.c内容`
2025-10-19 15:02:34
448
原创 嵌入式—FlashRom和SD卡
不同型号的 STM32,其 FLASH 容量也有所不同,最小的只有 16K 字节,最大的则达到了1024K 字节。市面上 STM32F1 开发板使用的芯片是 STM32F103系列,其 FLASH 容量一般为 512K 字节,属于大容量芯片;Flash的编程原理都是只能将1写为0,而不能将0写为1,所以在进行Flash编程前,必须将对应的块擦除,即将该块的每一位都变为1,块内所有字节变为0xFF。
2024-12-29 23:12:23
1020
原创 STM32F103C8移植RT_Thread
RT-Thread实时操作系统是一个分层的操作系统,它包括了:• 组件层components,这些是基于RT-Thread核心基础上的外围组件,把一些功能模块划分成独立的一个个组件模块,做到组件与组件之间的低耦合,组件内部的高内聚。例如文件系统,命令行shell接口,lwIP轻型TCP/IP协议栈,GUI图形用户界面等。• 硬实时内核kernel,这层是RT-Thread的核心,包括了内核系统中对象的实现,例如多线程及其调度,信号量,邮箱,消息队列,内存管理,定时器等实现。
2024-12-25 21:43:58
1090
原创 嵌入式—温湿度采集与OLED显示
最基础的OLED显示,就是利用厂家Demo程序,添加中文的相关点阵,调用相关函数。至于OLED屏滚动显示文字,就是在直接显示文字的基础上,只需添加滚动命令,只有在汉字取模写点阵时麻烦一点。最后在温湿度能够成功采集的基础上,进行类似的处理即可实现最终目的,温湿度的OLED显示。
2024-12-25 19:11:12
773
原创 嵌入式—定时器与PWM
本次实验主要是以定时器为核心,实现定时器中断以及用PWM控制呼吸灯的变化,对于定时器的理解其实就一点:它的本质就是计数,达到计数值后就会溢出,然后MCU复位,定时器可以精确控制时间间隔,通过设置计数器的初始值、计数频率以及终止条件等,可以实现较为精确的延时控制。这对于需要精确时间控制的应用场景尤为重要,与使用延时函数不同,定时器延时是在后台通过不断更新计数器的值来实现的。这意味着在延时过程中,程序可以继续执行其他任务,不会阻塞程序流程。这提高了系统的并发处理能力和整体运行效率。
2024-12-11 21:48:43
930
原创 嵌入式—STM32串口通信
本次实验是基于STM32的HAL库实现LED流水灯效果。通过该实验,对STM32的HAL库以及GPIO、外部中断的使用有了更深入的了解在实验中,通过HAL库提供的函数,我可以方便地对GPIO引脚进行初始化、配置和控制。在本次实验中,我使用了3个GPIO引脚来控制3个LED灯,通过外部中断的触发来控制LED流水灯功能是否打开通过本次实验,我不仅学会了使用STM32的HAL库来控制GPIO引脚和定时器,还掌握了调试代码的方法和技巧。
2024-12-10 23:11:07
766
原创 嵌入式——基于HAL库和中断的LED流水灯
本次实验是基于STM32的HAL库实现LED流水灯效果。通过该实验,对STM32的HAL库以及GPIO、外部中断的使用有了更深入的了解在实验中,通过HAL库提供的函数,我可以方便地对GPIO引脚进行初始化、配置和控制。在本次实验中,我使用了3个GPIO引脚来控制3个LED灯,通过外部中断的触发来控制LED流水灯功能是否打开通过本次实验,我不仅学会了使用STM32的HAL库来控制GPIO引脚和定时器,还掌握了调试代码的方法和技巧。
2024-12-01 19:14:03
594
原创 嵌入式——基于寄存器地址&标准外设库的LED流水灯
本篇文章介绍了stm32的一些基础知识,包括一些基本的开发步骤,熟悉了keil软件的使用,通过使用寄存器方式和标准库方式进行点亮流水灯的操作,在实际中,由于是有寄存器开发难度较大,需要开发者对硬件有深入的了解,所以采用标准库的方式会更多一些。在我看来,使用stm32进行开发最重要的就是要对各个函数了解,并且对一些基本的原理要铭记于心,比如开启时钟和GPIO的初始化,这都是必不可少的,在实验过程中一定要确认自己的设备完好,同时相关的配置以及软件都已安装好,避免后续出现一些头疼的问题。
2024-11-24 23:19:28
578
原创 嵌入式——基于寄存器地址&标准外设库的LED流水灯
打开keil,点击Project,选择New uVision Project选择 CPU 型号,根据开发板进行选择在线添加库文件用寄存器控制 STM32 时,不需要在线添加库文件,可以直接关掉。添加文件①添加已经存在文件在新建的工程中添加启动文件(startup_stm32f10x_hd.s),该文件可以先到固件库中复制到此处startup_stm32f10x_hd.s。②创建新文件stm32f10x.h手动新建,用于存放寄存器映射的代码,暂时为空。main.c手动新建,用于存放 mai
2024-11-24 22:59:21
717
原创 作业一,嵌入式系统程序设计基础
1.在Ubuntu系统下用C语言编写一个简单的输出 hello word的程序,并编译有、运行之在系统终端输入touch hello.c建立文件,再输入gedit hello.c打开编译器,在编译器中输入以上代码后保存并在终端输出2.请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;
2024-11-13 22:29:39
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅