- 博客(62)
- 收藏
- 关注
原创 stm32f103-gpio源码理解
提要:参照野火的stm32f103开发指南,对标准库的构造进行理解:(1)使用结构体,使用宏,使用枚举(2)因为参数是可变的,所以针对可变的参数,设计了函数,目的是尽管参数不同,但最终都能配置相关的寄存器。//枚举typedef enum{ GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz}GPIOSpeed_TypeDef;//结构体typedef enum{ GPIO_Mode_AIN = 0x0,
2022-02-26 13:59:08 949
原创 正点原子f103新建工程模板——基于固件库
编译器版本要选对,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
2022-02-22 01:05:10 609
原创 通用定时器6
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外设配置
2022-02-07 20:36:40 392
原创 第8章 善于利用指针
1.输入3个整数,按有小到大的顺序输出(使用指针)。/*1.一定要先理清思路,把算法想清楚,再开始*/#include <stdio.h>void swap(int *,int *);int main(){ int n1,n2,n3; int *p1,*p2,*p3; printf("请输入3个整数,用空格间隔:");//加上提示性语句,增强交互性。 scanf("%d %d %d",&n1,&n2,&n3); p1 = &n1;
2022-01-02 11:36:13 405
原创 Debug 2021-12-26,2021-12-27两天时间终于搞明白了
Debug 2021-12-26,2021-12-27两天时间终于搞明白了求1000以内数的阶乘,我坚持按照自己的思路求,就是通过整数数组来储存。将乘积的各位数都放在整数数组中,将多位整数的相乘结果,存在整数数组中…#include <stdio.h>#define SIZE 3000void Print_Factorial ( const int N );int * multiply(int *temp,int *wei_m, int mul_er,int *temp_new);
2021-12-27 17:37:43 474
原创 [学习报告]《LeetCode零基础指南》(第九讲) 简单递归
文章目录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->left,roo
2021-12-19 15:49:08 496
原创 [学习报告]《LeetCode零基础指南》(第九讲) 二级指针
0.知识概念/*int **matrix1;int matrixSize1;int matrixColSize1;int returnSize1;int **returnColumnSizes;调用:func(matrix1,matrixSize1,&matrixColSize1,&returnSize1,returnColumnSizes1);int return_r = returnSize1;int return_c = (* returnColumnSizes)[j
2021-12-17 23:28:17 675
原创 [学习报告]《LeetCode零基础指南》(第八讲) 二维数组-gyro v0.0
文章目录0. 知识&概念1.解题报告Q1:1351. 统计有序矩阵中的负数Q2:1572. 矩阵对角线元素的和Q3:1672. 最富有客户的资产总量Q4:766. 托普利茨矩阵2.思考总结0. 知识&概念范式int countNegatives(int** grid, int gridSize, int* gridColSize){int r = gridSize; /行数/int c = gridColSize[0];/列数/1.解题报告Q1:1351. 统计
2021-12-16 22:02:19 325
原创 [学习报告]《LeetCode零基础指南》(第七讲) 贪心---gyro v1.0
文章目录0. 知识概念1. 解题报告Q1. 1913. 两个数对之间的最大乘积差Q2. 976. 三角形的最大周长Q3. 561. 数组拆分 IQ4. 881. 救生艇思考总结(think&summary):0. 知识概念贪心算法:不断转化问题,寻求问题的局部最优解。并不能保证数学上的整体绝对最优,而是保证工程上的整体最优。第一步明确到底什么是最优解?第二步明确什么是子问题的最优解?第三步分别求出子问题的最优解再堆叠出全局最优解?1. 解题报告题目见:《LeetCod
2021-12-15 17:15:19 1008
原创 [学习报告]《LeetCode零基础指南》(第六讲) C排序API---v1.0
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);}
2021-12-14 23:05:56 1085
原创 [学习报告]《LeetCode零基础指南》(第五讲) 指针-gyro
目录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
2021-12-13 23:52:07 781
原创 [学习报告]《LeetCode零基础指南》第三讲循环-gyro
Q1:剑指 Offer 64. 求1+2+…+nint sumNums(int n){ /*使用for循环,类和*/ int i =1; int sum = 0;/*所存*/ for(i=1;i<=n;++i) { sum = sum + i; } return sum;}Q2:231. 2 的幂bool isPowerOfTwo(int n){ if(...
2021-12-11 09:38:53 3518
原创 stm32的GPIO口PA0按键没按下就是低电平的分析
芯片:stm32f407ZET6X功能:实现两按键分别控制四个灯和一个蜂鸣器思路:将寄存器设置封装成函数,体会固件库的实现原理踩坑记录:下载程序后发现与PA0连接的按键,为按下,就出现了灯闪,蜂鸣器响,正常逻辑应该是按下按键,PA0口接地,此时才灯亮。原因分析:因为初始化PA0口时没有使能A组的时钟(RCC_AHB1ENR |= (0x01); 漏写),所以,上拉拉设置对A组IO口无效,我发现GPIO口在未使能的状态下,是低电平,猜想默认是下拉吗???。对于输入口,不要尝试置位或复位,因为输入模式
2021-07-06 23:02:42 3682 1
原创 (1)用keil编辑STM32点灯---遇到灯常亮不闪烁的问题
前言:我自己装了MDK后,按照讲课老师讲解,编写了一个stm32通过寄存器控制LED灯闪烁的程序,结果发现led灯不闪烁,但是程序写的没问题啊,和视频中讲师的源码一模一样,但就是,运行不成功,led灯常亮,并没有闪烁。百思不得其解。后来发现是volatile的问题,和keil优化级别设置问题导致的。我的keil工程优化级别的默认设置如下图:优化级别设置默认为-O1解决stm32点亮LED不闪烁问题方法有两个:方法一:更改优化级别为-O0方法二:while循环中出现的变量,定义时加上关键字volat
2021-06-28 22:29:23 8220 6
原创 C_001-函数返回值类型为指向一维数组的指针
/*--------利用指向一位数组的指针作为函数的返回值来查找数据-------------------1.使用了typedef来替换表示指向一维数组的指针类型,float (*PF)[4]中,PF为指针变量,它所指向的类型为包含4个float型元素的一维数组,用float (* )[4]来表示,除了变量之外的才是类型,想知道某个变量是什么类型,直接把该变量划掉,剩下的就是变量的类型2.-------------------------------------------------------
2020-09-11 21:39:48 438
原创 工程管理文件Makefile及gcc编译过程
一、工程管理文件Makefile1.什么是makefile?用来管理一个工程中的所有关联文件的文件:头文件、源文件、库文件。。。2.makefile文件在工程中一定要有吗?不一定一般原则,若编译命令比较复杂时,会写makefile文件若源文件较多时,也会写目的是为了简化编译时的复杂度二、项目工程中的文件组成1.简单版本源程序 main.c 包含主函数main功能函数 func1.c功能函数 func2.c…头文件 my_head.h 包含系统头文件,函数声明,宏定义,结构
2020-09-11 21:05:23 1774
原创 交叉编译(交叉工具链)
一、交叉编译(交叉工具链)在一个环境下编译生成一个可以在另一个环境中执行的可执行文件的工具本地编译命令 gcc 实现把高级语言的C文件,翻译成二进制文件是可以在虚拟机中找到的:which gcc用来查找命令位置的命令若目标命令存在,则反馈目标命令的绝对路径若目标命令不存在,则什么反馈都没有交叉编译命令 实现把高级语言的C文件,翻译成二进制文件首先需要安装交叉工具链,才能找到因为最开始的镜像默认是没有交叉工具链区别:执行的环境不一样gcc属于本地编译命令,编译生成的文件是在虚拟
2020-09-11 21:03:52 1846
原创 Linux基础shell命令(1)一chmod、adduser、ps等
1.虚拟机.Ubuntu的安装过程准备镜像:http://cn.ubuntu.com/download/ubuntu基本上是每年的4月份和10月发布所以一般版本号:16.04 18.04 20.04下载镜像一定要长期支持版本:LTS意为“长期支持”,一般为5年。LTS版本将提供免费安全和维护更新至2025年4月。ubuntu系统现在并且以后将来永远是免费使用。所以才会退出麒麟版基于Linux操作系统:开源 、可裁剪 、 用户群体广泛2.Ubuntu是基于Linux系统发行版本之一R
2020-08-30 22:54:57 387
原创 Linux基础shell命令(2)——重定向,复制,通配符,删除,搜索,查看等
1.alias ---->取别名含义:取别名使用:alias c=‘clear’alias l=‘ls -l’ 注意:不仅可以给命令取别名,这个命令还可以带参数2.ln含义:链接 (1.硬链接(基本废弃使用) 2.软链接(现在常用) )命令: ln ln -s为什么不用硬链接了?①硬链接不能跨文件系统首先ls -li,可以看到每个文件都有一个自己的ID号,
2020-08-30 22:44:13 1210
原创 7-45 完数之先函数调用判断
所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。本题要求编写程序,找出任意两正整数m和n之间的所有完数。输入格式:输入在一行中给出2个正整数m和n(1<m≤n≤10000),中间以空格分隔。输出格式:逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均...
2020-04-13 23:37:34 505
原创 7-44黑洞数之do while循环
黑洞数也称为陷阱数,又称“Kaprekar问题”,是一类具有奇特转换特性的数。任何一个各位数字不全相同的三位数,经有限次“重排求差”操作,总会得到495。最后所得的495即为三位黑洞数。所谓“重排求差”操作即组成该数的数字重排后的最大数减去重排后的最小数。(6174为四位黑洞数。)例如,对三位数207:第1次重排求差得:720 - 27 = 693;第2次重排求差得:963 - 369 =...
2020-04-13 21:32:52 578
原创 7-43 Shuffling Machine (20分)之指针数组
7-43 Shuffling Machine (20分)Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid “inside jobs” where emplo...
2020-04-05 15:39:29 291
原创 7-42 整除光棍 (20分)之模拟除法
7-42 整除光棍 (20分)这里所谓的“光棍”,并不是指单身汪啦~ 说的是全部由1组成的数字,比如1、11、111、1111等。传说任何一个光棍都能被一个不以5结尾的奇数整除。比如,111111就可以被13整除。 现在,你的程序要读入一个整数x,这个整数一定是奇数并且不以5结尾。然后,经过计算,输出两个数字:第一个数字s,表示x乘以s是一个光棍,第二个数字n是这个光棍的位数。这样的解当然不是唯...
2020-04-04 17:34:25 516
原创 Vb.net之treeview控件基础概念
TreeView 控件由节点组成。树中的每个项都称为一个节点,它由一个 TreeNode 对象表示。包含其他节点的节点称为“父节点”。包含在其他节点中的节点称为“子节点”。没有任何子节点的节点称为“叶节点”。不被任何其他节点包含并且是所有其他节点的上级节点的节点称为“根节点”。一个节点可以同时是父节点和子节点,但是不能同时为根节点、父节点和叶节点。节点为根节点、父节点还是叶节点决定着节点的几种可视...
2019-12-30 14:34:08 1788
原创 VB.net串口相关概念-1101
SerialPort(1)bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);楼上的说法有点意思,但是不完全透彻。其实问题在于串口返回数据时,它返回的速度可能不会太快,而程序执行是非常快的。也就是说,当执行到Read语句时,串口根本没来得及返回那么多的数据,如你说的,只返回了9个字节。即便你指定bytesToRead大小也没有用...
2019-12-30 10:42:15 308
原创 C++的初步认识
C++是C语言的增强,1980开始在C的基础上进行开发并取得成功,1985开始在AT&T以外流行开来。1988第一个真正的C编译系统诞生,1998年被ISO批准了国际标准,2003年ISO又发布了第二版即现在使用的C++标准。与C兼容,是C的超集。其既可以用于面向过程的结构化设计,又可以用于面向对象的程序设计。 函数声明放在函数被调用之前,当函数声明后,函数的位置便不...
2019-09-01 22:44:33 227
转载 2019/05/02
HTML(the Hypertext Markup Language) andCSS(Cascading Style Sheets) are two of the core technologies for building Web pages. HTML provides thestructureof the page, CSS the (visual and aural)layou...
2019-05-02 21:00:08 118
原创 win10 操作系统JDK 11安装配置环境变量
JDK 11的安装说明https://docs.oracle.com/en/java/javase/11/install/installation-jdk-microsoft-windows-platforms.html#GUID-A7E27B90-A28D-4237-9383-A58B416071CA(1)系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录(2...
2018-11-13 23:36:21 3723
原创 第三天——让简历有点色彩
(1)css 语法1.css 是声明式语法,语法简单直接易于理解,由声明块和选择器构成。声明块中包括属性(字体、颜色、宽度等)和属性值。有300多个属性及几乎无数多个属性值。2.声明块中每一个声明都要加分号;(2)选择器1.类型选择器(元素选择器);2.类选择器(班点);3.ID#;4.通用选择器(*)大型网页中影响性能使变慢; ...
2018-08-07 20:42:14 209
转载 jQuery-2018-3-20
1.jQuery 库 - 特性jQuery 是一个 JavaScript 函数库。jQuery 库包含以下特性:HTML 元素选取HTML 元素操作CSS 操作HTML 事件函数JavaScript 特效和动画HTML DOM 遍历和修改AJAXUtilities2<script type="text/javascript">$(document).ready(function(){$...
2018-05-19 15:13:08 198
转载 "this"和普通函数
以下内容 摘自https://www.w3cschool.cn/ivmkf/ivmkf-v3y2250z.html和https://classroom.udacity.com/nanodegrees/nd001-cn-preview/parts/63e29129-49ba-41cf-87d6-f98246da3f24/modules/166575d1-e43b-4cbf-90da-26c36c6b...
2018-05-19 10:16:27 271
转载 [ ]的四种语义和解析Javascript中大括号“{}”的多义性
Javascript中括号有四种语义语义1,声明数组 复制代码 代码如下:var ary = []; // 声明一个空数组var ary = [1,3]; // 声明一个数组,同时赋初值语义2,取数组成员 复制代码 代码如下:var ary = [1,2,3];var item = ary[0];语义3,定义对象成员 (可以不遵循标识符规则 )复制代码 代码如下:var obj = {};// 为...
2018-05-14 20:11:12 445
原创 React 理念
React 理念第一步:把 UI 划分出组件层级例如 单一功能原则,在理想状况下,一个组件应该只做一件事情。如果这个组件功能不断丰富,它应该被分成更小的组件。第二步:用 React 创建一个静态版本最简单的方式是先创建一个静态版本:传入数据模型,渲染 UI 但没有任何交互。最好把这些过程解耦,因为创建一个静态版本更多需要的是码代码,不太需要逻辑思考,而添加交互则更多需要的是逻辑思考,不是码代码。要...
2018-04-30 21:15:55 319
原创 类
class Vehicle { constructor(color = 'blue', wheels = 4, horn = 'beep beep') { this.color = color; this.wheels = wheels; this.horn = horn; } honkHorn() { console.log(this.horn); }}/...
2018-04-29 10:13:28 150
转载 Reactjs学习记录(006)-状态提升
const scaleNames = { c: 'Celsius', f: 'Fahrenheit'};function toCelsius(fahrenheit) { return (fahrenheit - 32) * 5 / 9;}function toFahrenheit(celsius) { return (celsius * 9 / 5) + 32;}...
2018-04-26 18:19:56 291
转载 Reactjs学习记录(006)-表单
HTML表单元素与React中的其他DOM元素有所不同,因为表单元素生来就保留一些内部状态。当用户提交表单时,HTML的默认行为会使这个表单跳转到一个新页面。在React中亦是如此。但大多数情况下,我们都会构造一个处理提交表单并可访问用户输入表单数据的函数。实现这一点的标准方法是使用一种称为“受控组件”的技术。受控组件在HTML当中,像<input>,<textarea>,...
2018-04-26 17:59:14 190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人