<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hlhe_14的博客]]></title><description><![CDATA[记录]]></description><link>https://blog.youkuaiyun.com/hlhe_14</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hlhe_14]]></copyright><item><title><![CDATA[C语言转义字符探究]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/145319860</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/145319860</guid><author>hlhe_14</author><pubDate>Thu, 23 Jan 2025 12:19:57 +0800</pubDate><description><![CDATA[C语言中的转义字符]]></description><category></category></item><item><title><![CDATA[c语言变量的存储方式和生存期 -考察]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/125955505</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/125955505</guid><author>hlhe_14</author><pubDate>Sun, 24 Jul 2022 11:25:21 +0800</pubDate><description><![CDATA[C语言中关于局部变量，全局变量，static 的思考总结]]></description><category></category></item><item><title><![CDATA[stm32f103-gpio源码理解]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/123148917</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/123148917</guid><author>hlhe_14</author><pubDate>Sat, 26 Feb 2022 13:59:08 +0800</pubDate><description><![CDATA[提要：参照野火的stm32f103开发指南，对标准库的构造进行理解：
（1）使用结构体，使用宏，使用枚举
（2）因为参数是可变的，所以针对可变的参数，设计了函数，目的是尽管参数不同，但最终都能配置
相关的寄存器。
//枚举
typedef enum
{ 
  GPIO_Speed_10MHz = 1,
  GPIO_Speed_2MHz, 
  GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;


//结构体
typedef enum
{ GPIO_Mode_AIN = 0x0,
 ]]></description><category></category></item><item><title><![CDATA[正点原子f103新建工程模板——基于固件库]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/123058625</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/123058625</guid><author>hlhe_14</author><pubDate>Tue, 22 Feb 2022 01:05:10 +0800</pubDate><description><![CDATA[编译器版本要选对，
1，原来的MDK版本5.15，使用的V5编译器；新的MDK5.26使用的是V6编译器；
2，在5.26版本下，ARM Compiler选择V5.06 update 6(build 750)时候，需要将“Run-Time Environment”中的不必要引用去掉，不然会有大量报错；
3，如果ARM Compiler选择使用“Use default compiler version 6”会自动勾选部分引用，但是由于使用的“CMSIS”版本是旧的，在V6下无法编译通过，编译失败。

打开st]]></description><category></category></item><item><title><![CDATA[1-选择排序]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122891062</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122891062</guid><author>hlhe_14</author><pubDate>Sat, 12 Feb 2022 00:24:46 +0800</pubDate><description><![CDATA[选择排序]]></description><category></category></item><item><title><![CDATA[通用定时器6]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122814351</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122814351</guid><author>hlhe_14</author><pubDate>Mon, 07 Feb 2022 20:36:40 +0800</pubDate><description><![CDATA[stm32f407–通用定时器6，2秒翻转亮灯
#include "tim6.h"


void tim6_Init(void)
{ 
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
	
	NVIC_InitTypeDef NVIC_InitStruct;
	/**
	*S1:开启通用定时器6的时钟
	*/
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
	
	/**
	*S2:TIM6外设配置
	]]></description><category></category></item><item><title><![CDATA[第8章 善于利用指针]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122268540</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122268540</guid><author>hlhe_14</author><pubDate>Sun, 02 Jan 2022 11:36:13 +0800</pubDate><description><![CDATA[1.输入3个整数，按有小到大的顺序输出（使用指针）。
/*1.一定要先理清思路，把算法想清楚，再开始*/
#include &lt;stdio.h&gt;

void swap(int *,int *);
int main()
{
	int n1,n2,n3;
	int *p1,*p2,*p3;
	printf("请输入3个整数，用空格间隔:");//加上提示性语句，增强交互性。
	
	scanf("%d %d %d",&amp;n1,&amp;n2,&amp;n3);
	
	p1 = &amp;n1;
	]]></description><category></category></item><item><title><![CDATA[Debug 2021-12-26,2021-12-27两天时间终于搞明白了]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122176961</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122176961</guid><author>hlhe_14</author><pubDate>Mon, 27 Dec 2021 17:37:43 +0800</pubDate><description><![CDATA[Debug 2021-12-26,2021-12-27两天时间终于搞明白了
求1000以内数的阶乘，我坚持按照自己的思路求，就是通过整数数组来储存。将乘积的各位数都放在
整数数组中，将多位整数的相乘结果，存在整数数组中…

#include &lt;stdio.h&gt;
#define SIZE 3000
void Print_Factorial ( const int N );
int * multiply(int *temp,int *wei_m, int mul_er,int *temp_new);]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第九讲) 简单递归]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122022660</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122022660</guid><author>hlhe_14</author><pubDate>Sun, 19 Dec 2021 15:49:08 +0800</pubDate><description><![CDATA[文章目录0.	知识概念1.	解题报告Q0：172. 阶乘后的零Q2:1342. 将数字变成 0 的操作次数Q3:222. 完全二叉树的节点个数Q4:	LCP 44. 开幕式焰火3.	思考归纳
0.	知识概念
思考问题，发现递推规律后实现递归：
递归的4步骤：
（1）写一个递归函数名f(){}；
（2）递归的终止靠递归转折点：一般是一个if 语句控制；
（3）递归的出口：返回值ret；
（4）递归的递推通项：调用递归函数本身，ret = 含f(n-1)或f(n+5)或f(n/5)或n-&gt;left,roo]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第九讲) 二级指针]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/122003172</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/122003172</guid><author>hlhe_14</author><pubDate>Fri, 17 Dec 2021 23:28:17 +0800</pubDate><description><![CDATA[0.知识概念
/*
int **matrix1;
int matrixSize1;
int matrixColSize1;
int returnSize1;
int **returnColumnSizes;
调用:func(matrix1,matrixSize1,&amp;matrixColSize1,&amp;returnSize1,returnColumnSizes1);
int return_r = returnSize1;
int return_c = (* returnColumnSizes)[j]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第八讲) 二维数组-gyro v0.0]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121982587</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121982587</guid><author>hlhe_14</author><pubDate>Thu, 16 Dec 2021 22:02:19 +0800</pubDate><description><![CDATA[文章目录0. 知识&amp;概念1.解题报告Q1：1351. 统计有序矩阵中的负数Q2:1572. 矩阵对角线元素的和Q3:1672. 最富有客户的资产总量Q4:766. 托普利茨矩阵2.思考总结
0. 知识&amp;概念

范式
int countNegatives(int** grid, int gridSize, int* gridColSize){
int r = gridSize;      /行数/
int  c = gridColSize[0];/列数/

1.解题报告
Q1：1351. 统计]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第七讲) 贪心---gyro v1.0]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121955104</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121955104</guid><author>hlhe_14</author><pubDate>Wed, 15 Dec 2021 17:15:19 +0800</pubDate><description><![CDATA[文章目录0.	知识概念1.	解题报告Q1.	1913. 两个数对之间的最大乘积差Q2.	976. 三角形的最大周长Q3.	561. 数组拆分 IQ4.	881. 救生艇思考总结（think&amp;summary）：
0.	知识概念


贪心算法：不断转化问题，寻求问题的局部最优解。并不能保证数学上的整体绝对最优，而是保证工程上的整体最优。


第一步
明确到底什么是最优解？
第二步
明确什么是子问题的最优解？
第三步
分别求出子问题的最优解再堆叠出全局最优解？


1.	解题报告
题目见：《LeetCod]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第六讲) C排序API---v1.0]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121932018</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121932018</guid><author>hlhe_14</author><pubDate>Tue, 14 Dec 2021 23:05:56 +0800</pubDate><description><![CDATA[Trick:qsort()排序API的用法
（1）
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));

（2）int compar(const void *p1, const void *p2);
递增
int cmp(const void *p1, const void *p2) {
    return (*(int *)p1) - (*(int *)p2);
}

]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》(第五讲) 指针-gyro]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121914609</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121914609</guid><author>hlhe_14</author><pubDate>Mon, 13 Dec 2021 23:52:07 +0800</pubDate><description><![CDATA[目录1.0 解题报告Q1:1470. 重新排列数组Q2:1929. 数组串联Q3：1920. 基于排列构建数组Q4:1480. 一维数组的动态和Q5:剑指 Offer 58 - II. 左旋转字符串2.思考总结：
1.0 解题报告
Q1:1470. 重新排列数组
/**Q1_method1:
*trick:以i为媒介，串联两边数组
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* shuffl]]></description><category></category></item><item><title><![CDATA[《LeetCode零基础指南》(第四讲) 一维数组 gyro]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121891320</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121891320</guid><author>hlhe_14</author><pubDate>Sun, 12 Dec 2021 22:36:34 +0800</pubDate><description><![CDATA[leetcode 刷题记录 二分法 斐波那契数列 数据结构与算法]]></description><category></category></item><item><title><![CDATA[[学习报告]《LeetCode零基础指南》第三讲循环-gyro]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/121868300</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/121868300</guid><author>hlhe_14</author><pubDate>Sat, 11 Dec 2021 09:38:53 +0800</pubDate><description><![CDATA[Q1:剑指 Offer 64. 求1+2+…+n




int sumNums(int n){
    /*使用for循环，类和*/
    int i =1;
    int sum = 0;/*所存*/
    for(i=1;i&lt;=n;++i)
    {
        sum = sum + i;
    }

    return sum;

}





Q2:231. 2 的幂


bool isPowerOfTwo(int n)
{

    if(...]]></description><category></category></item><item><title><![CDATA[stm32的GPIO口PA0按键没按下就是低电平的分析]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/118531553</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/118531553</guid><author>hlhe_14</author><pubDate>Tue, 06 Jul 2021 23:02:42 +0800</pubDate><description><![CDATA[芯片：stm32f407ZET6X
功能：实现两按键分别控制四个灯和一个蜂鸣器
思路：将寄存器设置封装成函数，体会固件库的实现原理
踩坑记录：下载程序后发现与PA0连接的按键，为按下，就出现了灯闪，蜂鸣器响，正常逻辑应该是按下按键，PA0口接地，此时才灯亮。
原因分析：因为初始化PA0口时没有使能A组的时钟（RCC_AHB1ENR |= (0x01);  漏写），所以，上拉拉设置对A组IO口无效，我发现GPIO口在未使能的状态下，是低电平，猜想默认是下拉吗？？？。对于输入口，不要尝试置位或复位，因为输入模式]]></description><category></category></item><item><title><![CDATA[（1）用keil编辑STM32点灯---遇到灯常亮不闪烁的问题]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/118313421</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/118313421</guid><author>hlhe_14</author><pubDate>Mon, 28 Jun 2021 22:29:23 +0800</pubDate><description><![CDATA[前言：我自己装了MDK后，按照讲课老师讲解，编写了一个stm32通过寄存器控制LED灯闪烁的程序,结果发现led灯不闪烁，但是程序写的没问题啊，和视频中讲师的源码一模一样，但就是，运行不成功，led灯常亮，并没有闪烁。百思不得其解。后来发现是volatile的问题，和keil优化级别设置问题导致的。
我的keil工程优化级别的默认设置如下图：优化级别设置默认为-O1

解决stm32点亮LED不闪烁问题方法有两个：
方法一：更改优化级别为-O0
方法二：while循环中出现的变量，定义时加上关键字volat]]></description><category></category></item><item><title><![CDATA[C_001-函数返回值类型为指向一维数组的指针]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/108542092</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/108542092</guid><author>hlhe_14</author><pubDate>Fri, 11 Sep 2020 21:39:48 +0800</pubDate><description><![CDATA[/*--------利用指向一位数组的指针作为函数的返回值来查找数据-------------------
1.使用了typedef来替换表示指向一维数组的指针类型，float (*PF)[4]中，PF为指针变量，它所指向
的类型为包含4个float型元素的一维数组，用float (* )[4]来表示，除了变量之外的才是类型,想知道某个变量是什么类型，直接把该变量划掉，剩下的就是变量的类型
2.

-------------------------------------------------------]]></description><category></category></item><item><title><![CDATA[工程管理文件Makefile及gcc编译过程]]></title><link>https://blog.youkuaiyun.com/hlhe_14/article/details/108541763</link><guid>https://blog.youkuaiyun.com/hlhe_14/article/details/108541763</guid><author>hlhe_14</author><pubDate>Fri, 11 Sep 2020 21:05:23 +0800</pubDate><description><![CDATA[一、工程管理文件Makefile
1.什么是makefile？
用来管理一个工程中的所有关联文件的文件：头文件、源文件、库文件。。。
2.makefile文件在工程中一定要有吗？
不一定
一般原则，若编译命令比较复杂时，会写makefile文件
若源文件较多时，也会写
目的是为了简化编译时的复杂度
二、项目工程中的文件组成
1.简单版本
源程序		main.c 		包含主函数main
功能函数	func1.c
功能函数	func2.c
…
头文件		my_head.h	包含系统头文件，函数声明，宏定义，结构]]></description><category></category></item></channel></rss>