- 博客(32)
- 资源 (4)
- 收藏
- 关注
原创 FreeRTOS中将节点插入到链表的尾部
这段代码实现了在双向链表尾部插入新节点的功能。通过修改指针关系,将新节点插入到尾节点(pxIndex)之前:①新节点next指向尾节点;②新节点previous指向尾节点原前驱;③更新原前驱节点的next指向新节点;④更新尾节点的previous指向新节点。最后记录链表信息并增加节点计数。图示说明了插入前后的指针变化关系。
2026-04-11 14:37:28
30
原创 关于LCD与STM32中大端序与小端序
摘要: STM32的SPI传输模式选择(8-bit或16-bit)取决于数据源的内存存储方式。对于大端模式图片数据(如RGB565格式),内存已按正确顺序排列(高字节在前),应使用8-bit模式直接透传字节。而对于小端存储的本地变量,需用16-bit模式,利用硬件自动校正大小端,确保SPI按MSB优先发送(高字节先出)。错误选择模式会导致字节顺序颠倒,显示异常。核心在于区分数据源的存储顺序(大端/小端)及硬件对多字节数据的处理机制。
2025-11-27 09:19:05
685
原创 STM32学习记录--Day8
本文介绍了ADC(模数转换器)的基本知识,重点讲解了12位ADC的特性、电路结构、输入限制及编程接口。内容包括ADC的类型分类、模块结构图、常规/注入序列转换方式、输入频率限制(≤14MHz)、转换与采样时间的关系,以及编程时的数据对齐方式(左对齐/右对齐)。文章以STM32F103C8T6为例,说明ADC位数与精度的关系,为嵌入式系统开发中的模拟信号处理提供了基础参考。
2025-08-06 20:58:27
181
原创 STM32学习记录--Day7
本文介绍了定时器PWM配置的基本步骤:1)初始化GPIO引脚为复用推挽输出模式;2)配置时基单元,包括计数模式、周期、预分频等参数;3)设置输出比较模式为PWM1,配置极性、输出状态等;4)通过修改CCR1寄存器值调整PWM占空比。文中还提及了互补输出、极性选择、输入捕获等高级功能,并给出了完整的STM32定时器PWM初始化代码范例,展示了从GPIO配置到PWM输出的完整流程。
2025-08-04 14:13:09
177
原创 STM32学习记录--Day6
摘要:时钟是单片机的"心脏",通过振动产生信号驱动各模块。时钟树包含多个时钟源:HSI(8MHz RC振荡器)用于低功耗备用,HSE(4-16MHz晶振)作为主时钟,LSE(32.768kHz)用于RTC精准计时,LSI(40kHz RC)驱动看门狗。系统还涉及分频器、锁相环、复用器等组件,以及Flash指令预取功能(提前缓存下一条指令)。不同时钟源通过特定寄存器配置,共同构成完整的时钟系统架构。
2025-08-02 21:37:17
387
原创 STM32学习记录--Day5
摘要:本文介绍了STM32微控制器的外部中断(EXTI)系统架构和工作原理。EXTI系统包含20条中断线(EXTI0-19),其中16条可用于GPIO引脚,4条为专用线。GPIO引脚通过引脚号自动映射到对应的EXTI线(如PA0→EXTI0),但同一时间每条EXTI线只能连接一个GPIO引脚。EXTI支持配置上升沿、下降沿或双边沿触发模式,并通过NVIC控制器管理中断优先级。文中提供了完整的配置流程示例代码,包括GPIO初始化、EXTI线配置和NVIC设置,并强调了专用中断线的特殊用途和配置时的注意事项。
2025-08-01 19:54:09
1217
原创 STM32学习记录--Day3
I2C通信协议是一种主从模式的双线串行总线(SCL时钟线和SDA数据线)。其核心特点包括:主机控制通信时序,通过起始位(SCL高时SDA下降沿)和停止位(SCL高时SDA上升沿)标识通信起止;支持7位设备地址+R/W位(1读/0写)的8位寻址;每个字节传输后需ACK应答(第9个时钟脉冲);数据传输包含主写从(主机发送)和主读从(从机发送)两种模式。I2C具有标准、快速等不同速度模式,通过特定时序实现可靠通信。
2025-07-30 20:21:05
408
原创 STM32学习记录--Day2
摘要:本文介绍了STM32串口(USART)的基本使用方法。主要内容包括:1)USART1默认使用PA9和PA10引脚,可重映射至PB6和PB7;2)串口电路结构;3)波特率设置方法,通过USART_InitTypeDef结构体配置参数如115200波特率、8位数据位、无校验位和1位停止位;4)使用USART_Init初始化USART1并通过USART_Cmd使能;5)串口数据发送功能。这些内容为STM32串口通信开发提供了基础配置指导。
2025-07-30 08:24:41
286
原创 STM32学习记录--Day1
摘要:学习STM32F103C8T6核心板的入门知识,包括三种启动模式、GPIO的八种工作模式(重点分析推挽输出与开漏输出的MOS管导通差异),以及通用与复用模式的区别(信号来源不同)。同时探讨了LED的两种接法,参考了铁头山羊的B站课程和江科大的配套资料。
2025-07-28 21:08:58
372
原创 聊聊keil的外部文件引用
众所周知,如果把所有你写的所有函数都放在一个文件中,若你的代码不长还好,若一长就会显得很杂乱,所以有必要把特定的函数放在特定的文件中。所以在这个过程中就会涉及到外部文件的调用。首先来说说keil中.c和.h这两者的作用,.c文件更多的是需要你写函数的功能的,.h文件更多的是用来放外部申明的。举个例子如果我需要把以下函数放在LCD.c这个文件中,首先我需要创建一个LCD.cvoid LCD_SetCursor(unsigned char Line,unsigned char Column)
2021-11-24 21:03:00
4070
2
原创 C语言连续输入两个字符串
一开始用scanf来输入两个字符串,程序运行到一半总是停止,后来查阅资料后发现用get函数来就没有问题了。简直对不起C语言老师的教导????????。由于我用的是VS2019,这里的函数是gets_s,一般的编译器都是用get就行了。...
2020-10-23 16:20:14
7733
2
原创 自测-3 数组元素循环右移问题 (20分)(自认为写的还行)
代码:#include<stdio.h>int main(){ int n, m; scanf("%d %d", &n, &m); int a[1000]={0};//数组足够大防止越界 int i = 0; for (i = 0; i < n; i++) { scanf("%d", &a[i]); } int t,h=m-1; for (i = n-1; i >=0 ; i--) { t = a[i+m]; a[i +.
2020-08-01 09:10:18
154
原创 自测-1 打印沙漏 (20分)(想了好久终于想出来了)
本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印***** *** * ********所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。输入格式:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。输出格式:首先打印出由给定符号组成的最大的沙漏形状,
2020-07-27 16:18:32
244
原创 强推一门B站上学习大学物理的课程
链接:【大学物理】东北大学-马文蔚老师讲的超级详细,超级好!!!!!强推!!!!!在B站也已经有了百万的播放量。妈妈再也不用担心我的大物挂科了。????
2020-07-18 21:07:15
10289
5
原创 如何在知网上免费下载文献
众所周知,在知网下载文献是巨贵的那么有什么好的办法能够免费下载文献呢?我这个办法的前提就是你所在的学校购买了知网的文献数据库。然后就是通过这个网址:中国知网高校/机构外部访问系统输入你的学校。然后:下一步:一般都是用校园一卡通登录,输入你的学号和密码。 登录成功后即进入中国知网,正常获取文献资源。...
2020-07-18 19:32:54
2721
原创 C语言中的位运算
按位取反运算符:~,在二进制中0变1,1变0。”左移“运算符:<<,二进制中向左移动一位,相当于原有数值乘以2。”右移“运算符:>>,二进制中向右移动一位,相当于原有数值除以2。按位与运算符:&,二进制中1&1=1,1&0=0,0&1=0,0&0=0。按位异或运算符:^,二进制中当两个值不同时结果为1按位或运算符:|,二进制中1|1=1,1|0=1,0|1=1,0|0=0。且5<<2相当于5*2*2=20。所有的位运
2020-07-15 15:38:49
244
原创 C语言中的问号表达式
这道题目中的w<x?w:z<y?z:x可以写为:w<x?w:(z<y?z:x)首先z<y真的所以根据口诀真前假后得**(z<y?z:x)=z=1**又因为w<x为假,所以得整个表达式为:1
2020-07-14 21:06:46
3792
原创 C语言中如何输出一个百分数
在C语言中如果要输出一个百分数该怎么办呢?是这样吗?#include<stdio.h>int main(){ int a = 5; printf("%%d", a);}很显然不是???? 两个百分号是为了输出后面的% 相当于(%%)d,所以后面的%d并没有被输出,因为前面的%已经被用掉了????。那么该如何输出一个带有百分号的数呢?答案是再加一个%就对了????#include<stdio.h>int main(){ int a = 5; p
2020-07-11 15:02:45
30864
6
原创 PTA 习题4-2 求幂级数展开的部分和 (20分)(个人感觉代码还行)
输入格式:输入在一行中给出一个实数x∈[0,5]。输出格式:在一行中输出满足条件的幂级数部分和,保留小数点后四位。输入样例:1.2输出样例:3.3201#include<stdio.h>int main(){ double i=1, x, k=1,a; double s = 1,t; a = 1; scanf("%lf", &x); for (i = 1; a >= 0.00001; i++) { k = k * i; t = pow(x.
2020-07-10 15:09:32
663
原创 练习5-3 数字金字塔 (15分)(困扰我这个新手许久的题目,终于解出来了)
本题要求实现函数输出n行数字金字塔。函数接口定义:void pyramid( int n );其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。裁判测试程序样例:#include <stdio.h>void pyramid( int n );int main(){ int n; scanf("%d", &n); pyramid(n); return
2020-06-30 16:11:39
470
原创 练习4-6 猜数字游戏 (15分) 代码比较长,新手上路请多关照
练习4-6 猜数字游戏 (15分)猜数字游戏是令游戏机随机产生一个100以内的正整数,用户输入一个数对其进行猜测,需要你编写程序自动对其与随机产生的被猜数进行比较,并提示大了(“Too big”),还是小了(“Too small”),相等表示猜到了。如果猜到,则结束程序。程序还要求统计猜的次数,如果1次猜出该数,提示“Bingo!”;如果3次以内猜到该数,则提示“Lucky You!”;如果超过3次但是在N(>3)次以内(包括第N次)猜到该数,则提示“Good Guess!”;如果超过N次都没有猜到
2020-06-28 20:53:57
570
原创 PTA-实验9-7 找出总分最高的学生 (15分)
实验9-7 找出总分最高的学生 (15分)给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。输入格式:输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。输出格式:在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。输入样例:50000
2020-06-19 15:39:48
1807
原创 PTA-3-2高速公路超速处罚(求大神指点)
为什么第二个通不过?按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。输入格式:输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。输出格式:在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整
2020-06-19 15:34:50
475
数码管显示按键的键值.zip
2021-11-22
二级C语言程序设计_题库和模拟考场(2019年9月更新).exe
2020-08-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅