AT32 获取芯片唯一ID
官方文档: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include "at32f435_437_wk_config.h"#include "wk_system.h"#include "wk_usart.h"#include <stdio.h>#define STORAGE_INFO 0x1FFFF7E0 // 闪存大小(单位:KByte)#define UNIQUE_ID 0x1FFFF7E8#define UNIQUE_ID_0_31 0x1FFFF7E8#define UNIQUE_ID_32_63 0x1FFFF7EC#define UNIQUE_ID_64_95 0x1FFFF7F0struct mcu_info_t { uint32_t flash_size; uint8_t unique_id[12];}...
AT32 裸机按键长按操作小例子
在此分享一个我写的单片机裸机按键长按判断程序,程序功能有一个按键和一个led,按键默认为低电平,按下时为高电平并且为中断上升沿触发,长按时让蜂鸣器开关状态反转一次,当蜂鸣器开关状态为关闭时,按按键时蜂鸣器不响,当蜂鸣器开关状态为打开时则每按一下按键蜂鸣器就会响一下。 类型定义首先我们要定义一个结构体,这个结构体中包含各个用到的标志位和全局变量。 12345678910111213141516171819202122232425// sf_types.h#ifndef _SF_TYPES_H#define _SF_TYPES_H#include "at32f435_437.h"enum buzzer_t { BUZZER_FLAG_OFF, BUZZER_FLAG_ON };// 系统参数结构体// 1. 蜂鸣器开关标志位 buzzer_flag 0: 关闭蜂鸣器 1: 开启蜂鸣器// key_state:// bit[15] 未使用// bit[14] 按键中断触发标志位,中断触发时置位该位// bit[13] 长按标志位:1代表长按,0...
MSVC cl 命令使用笔记
我们又时不想安装 Visual Studio 又想使用 MSVC 编译器则可以安装 Microsoft C++ 生成工具 Microsoft C++ 生成工具通过可编写脚本的独立安装程序提供 MSVC 工具集,无需使用 Visual Studio。 如果从命令行界面(例如,持续集成工作流中)生成面向 Windows 的 C++ 库和应用程序, 作为持续集成工作流的一部分)。 包括 Visual Studio 2015 Update 3、Visual Studio 2017、Visual Studio 2019 和最新版本 Visual Studio 2022 中提供的工具。 cl 命令概述本文主要记录 cl 命令的使用,一下是 cl 命令的简短概述: cl是微软 Visual C++ 编译器(MSVC)的命令行工具,用于将 C 和 C++ 源程序编译成可执行文件、动态链接库或静态链接库等。以下是对cl命令的详细概述: 基本语法 cl命令的基本语法格式为:cl [options] source_file(s) [object_file(s)]...
稳压二极管笔记
稳压二极管的一些特性: 温度特性 一般稳压值低于 6V 的稳压二极管属于齐纳击穿,温度系数是负的; 高于 6V 的鱼鱼雪崩击穿,温度系数是正值
流程图使用笔记
写这篇流程图使用笔记,是因为想用流程图可视化的整理自己的逻辑。 流程图类型 基本流程图 数据流程图 泳道流程图 流程图符号 基础符号 椭圆形 (代表开始/结束) 矩形 (表示一个过程) 平行四边形(表示信息的输入/输出) 菱形(代表一个判断) 箭头(表示序列流)
AT32 滴答定时器 LED 闪烁
在此分享一下 AT32 Work Bench 创建的滴答定时器 LED 闪灯程序,程序只用到了一个 LED,下面是具体的内容。 配置 system 要把时基源参数中的延时模式选择为中断,否则的话不会启动中断函数。 123456789101112131415161718192021222324252627282930313233343536373839404142434445// main.cint main(void){ /* add user code begin 1 */ /* add user code end 1 */ /* system clock config. */ wk_system_clock_config(); /* config periph clock. */ wk_periph_clock_config(); /* nvic config. */ wk_nvic_config(); /* timebase config. */ wk_timebase_init(); /* init gpio function. */ ...
AT32 按键例子 - 外部中断模式
今天给大家分享一个基于 AT32 单片机的中断按键例子,这个例子通过一个按键控制一个 LED 的亮灭(中断-上升沿触发模式)。 原理图: 我们用的是 FP11_SW1 ,注意要是能内部上拉电阻,这里我用了 AT32 Work Bench 可视化配置工具。 中断配置: 配置为中断模式并且为上升沿触发,也就是我们在按下按键并且松开时才会触发中断。因为使能了内部上拉电阻,默认为高电平,所以才会在按键松开时触发中断。 我们需要勾选 EXINT15_10_IRQ,这样会在 at32f435_437_int.c 文件中生产 EXINT15_10_IRQHandler() 中断函数。 主循环代码: 123456789// main.cconfirm_state led2_flag = TRUE; // 全局变量while(1){/* add user code begin 3 */ gpio_bits_write(LED2_GPIO_PORT, LED2_PIN, led2_flag);/* add user code end 3...
Hello World
该文件是 hexo 中默认生成第一篇文章,在此我进行了升级,用该文章记录一些 hexo 使用的笔记。 Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$hexo deploy More info: Deployment 关于搜索https://butterfly.js.org/posts/ceeb73f/#%E6%90%9C%E7%B4%A2 我用的hexo主题是 buterfly 该主题支持几种搜索,这里我选用了最简单的 local_search 具体的配置是: 安装 hexo-generator-searchdb 配置主题的 search use 为: `local_search’...
C++ 中的构造函数
构造函数C++ 构造函数就是创建类对象时自动执行的函数,编译器会默认提供3给默认构造函数,一个构造函数,一个拷贝构造函数,一个移动构造函数。 例子: 1234class A{}; 类 A 的3给默认构造函数为: 123A(); // 构造函数A(const A&); // 拷贝构造函数A(A&&) // 移动构造函数 构造函数初始化列表构造函数初始化列表的语法: 1234567class A{private: int m_a, m_b, m_c;public: A(int _a, int _b, int _c);}; 构造函数定义: 123456789A::A(int _a, int _b, int _c) : m_a(_a), m_b(_b), m_c(_c){ std::cout << "a: " << m_a << std::endl; std::cout << "b: " << m_b...
Rust 中的宏分类
Rust中的宏可以按照不同的标准进行分类,以下是一些常见的分类方式及具体介绍: 按功能用途分类 声明宏:用于定义新的语法结构或对已有语法进行扩展,通过macro_rules!关键字定义。例如,vec!宏用于方便地创建Vec类型的数组,println!宏用于格式化输出到控制台。 过程宏:在编译时对代码进行操作和转换,比声明宏更强大,可以访问更多的编译器内部信息。包括以下三种类型: 自定义派生宏:允许为结构体和枚举自动实现特定的 trait。比如,为一个结构体派生Debug trait时,使用#[derive(Debug)],编译器会在编译阶段自动为该结构体生成Debug...