Rust 基础知识之函数
Rust 函数的定义是用 fn 关键字。
无返回值 无参数下面是一个无返回值和参数的函数。
1234fn print_hello(){ println!("Hello World!");}
定义带参数的函数在 rust 中定义带参数的函数必须指定参数的类型。
1234567891011fn main() { let height = 22.4; let width = 22.8; println!("矩形的面积为:{:.3}", get_rectangle_area(height, width));}fn get_rectangle_area(height: f64, width: f64) -> f64{ height * width}
交换两个数12345678910111213fn main() { let mut a = 233; let mut b = 221; swap(&mut ...
C++ 教程收藏
C++ 教程 | 菜鸟教程
GD32 滴答定时器
SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 时,将从RELOAD 寄存器中自动重装载定时初值,开始新一轮计数。
SysTick_Config(core_cm3.h)123456789101112131415161718192021222324252627/** \brief System Tick Configuration The function initializes the System Timer and its interrupt, and starts the System Tick Timer. Counter is in free running mode to generate periodic interrupts. \param [in] ticks Number of ticks between two interrupts. \return 0 Fu ...
MAX6675 K型热电偶的使用
MAX6675 K型热电偶芯片的使用。
数码管菜单程序
数码管菜单设计,数码管是电子开发中最常用的一种显示器件,所以必须学会使用。
这篇文章就来研究研究怎么设计一个基于数码管的菜单系统。
规划菜单功能首页首页是上电和正常状态下显示的页面,这里我们把首页显示一个数字。
一级菜单一级菜单是仅次于首页的菜单,单击设置按钮后直接进入的界面就是一级菜单。一级菜单可以直接用来设置一个属性值也可以是一个子菜单(二级菜单)。
基于菜单是用来设置属性的还是用来指向子菜单的,我们可以实现灵活的多级菜单。
流程
上电显示首页
电机设置,进入密码输入页面
密码输入正确,进入一级菜单页面,默认:FU01
转动旋转编码器切换 一级菜单,单击进入设置值。
菜单一直在主循环中遍历,一个中期只能执行一个分支的程序代码。如正常上电时遍历的便是 首页函数
EC11 旋转编码器的使用
EC11 参数
脉冲数:20个
带开关:有
操作寿命:50000次
最大额定:10mA 5V DC
轴型:半轴柄/梅花柄
EC11 原理图EC11 一共有5个引脚:
S1 按钮引脚1
S2 按钮引脚2
A A相引脚
B B 相引脚
C 是 A和B的公共引脚。
3个10K电阻是上拉电阻,默认三个引脚都输出高电平;3个470电阻是输出电阻,也可以 不要。
旋转编码器正转时的时序波形
旋转编码器正反转判断通过编码器旋转时的波形可以看到,如果 A 下降沿时,判断B的电平高低,如果为高是一个方向如果是低则为另一个方向。
分享一个国外的EC11 硬件消抖方案博客网址:Strömlinge: Rotary Encoder Debouncer (stroemlinge.blogspot.com)
方案文档下载:EC11 debouncer - Google 云端硬盘
这个方案用到的两个芯片为非门反相器集成电路,一个一路的一个两路的。
由于该方案用到了反相器,所以默认3个IO口输出为低电平。单片机外部中断要设置成上升沿触发。
原理图
分享一个国外的EC11软件消抖解决方案YouT ...
单片机按键消抖
按键由于机械特性原因会产生抖动干扰程序的判断,所有要进行消抖,方法有多种,如:消抖电路,软件阻塞式延时消抖,定时器消抖等。
阻塞消抖123456789101112131415#define KEY = P1^1;#define LED = P1^2;while(1){ if(KEY == 0) { delay_ms(10); if(KEY == 0) { LED = !LED; while(!KEY); } }}
GD32 滴答定时器按键消抖例子首先说下 IO 口的配置,配置IO口为外部中断下降沿触发模式。
消抖过程
GD32 有一下几种外部中断触发模式:
12345678/* interrupt trigger mode */typedef enum{ EXTI_TRIG_RISING = 0, /*!< EXT ...
VSCode 主题推荐
Shades of Purple这个主题是我最近发现的一款非常漂亮的紫色主题。
链接地址:Shades of Purple - Visual Studio Marketplace
C语言在数据结构中添加函数指针
C语言在数据结构中添加函数指针的方法。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>typedef int DataType;typedef struct array{ DataType *Data; int size; int max_size; void (*Constructor)(struct array *); // 构造函数 void ( ...
Emmet 语法用法
初始化 html
html:5 或 !: 用于 HTML5 文档类型
html:xt 用于XHTML过度文档类型
html:4s 用于HTML4 严格文档类型
添加类、ID、文本和属性类和IDp.bar1<p class="bar"></p>
p.bar#foo1<p class="bar" id="foo"></p>
元素内容和属性h1{foo}1<h1>foo</h1>
a[href=#]1<a href="#"></a>
h1{foo}a[href=#]12<h1>foo</h1><a href="#"></a>
嵌套Emmet 嵌套使用方法的例子
> 子元素ul>li*10{test}123456789101112<ul> <li>tset</li> <li& ...