ICode9

精准搜索请尝试: 精确搜索
  • 2021西湖论剑 Reverse(Re) Writeup(WP)2021-11-22 12:03:31

    ROR 二进制位线性变换,直接上z3。(不知道为什么,python脚本被压缩去掉空格了,各位将就看图片吧。) from z3 import * box = [ 0x65, 0x08, 0xF7, 0x12, 0xBC, 0xC3, 0xCF, 0xB8, 0x83, 0x7B, 0x02, 0xD5, 0x34, 0xBD, 0x9F, 0x33, 0x77, 0x76, 0xD4, 0xD7, 0xEB, 0x90, 0x89, 0

  • Go语言核心36讲(Go语言实战与应用七)--学习笔记2021-11-17 23:34:42

    29 | 原子操作(上) 我们在前两篇文章中讨论了互斥锁、读写锁以及基于它们的条件变量,先来总结一下。 互斥锁是一个很有用的同步工具,它可以保证每一时刻进入临界区的 goroutine 只有一个。读写锁对共享资源的写操作和读操作则区别看待,并消除了读操作之间的互斥。 条件变量主要是用于协

  • [GPIO]推荐一种超简单的硬件位带bitband操作方法,让变量,寄存器控制,IO访问更便捷,无需用户计算位置2021-11-11 16:33:27

      说明: M3,M4内核都支持硬件位带操作,M7内核不支持。 硬件位带操作优势 优势1: 比如我们在地址0x2000 0000定义了一个变量unit8_t  a, 如果我们要将此变量的bit0清零,而其它bit不变。 a & = ~0x01 这个过程就需要读变量a,修改bit0,然后重新赋值给变量a,也就是读 - 修改 - 写经典三部

  • STM32 LL库延时函数 LL_mDelay解析2021-11-10 14:33:16

    注意看上面的CTRL寄存器的CLKSOURCE位(时钟源位),它有两个选择,一个是内核时钟源FLCK(72MHz),一个是外部时钟源HCLK,这里应该是 我们知道,我们设定一个计数,那么每次计数器减到0,时间经过了:系统时钟周期 *计数器初值.我们使用72M作为系统时钟,那么每次计数器减1所用的时间是1/72M

  • Sentinel-Go 源码系列(二)|初始化流程和责任链设计模式2021-11-09 13:04:28

    上节中我们知道了 Sentinel-Go 大概能做什么事情,最简单的例子如何跑起来 其实我早就写好了本系列的第二篇,但迟迟没有发布,感觉光初始化流程显得有些单一,于是又补充了责任链模式,二合一,内容显得丰富一些。 初始化流程 初始化做了什么 Sentinel-Go 初始化时主要做了以下2件事情: 通过

  • main.C2021-11-09 12:02:55

    1 #include <inc/x86.h> 2 #include <inc/elf.h> 3 4 /********************************************************************** 5 * 这是一个非常简单的引导加载程序,它的唯一任务是从第一个IDE硬盘引导ELF内核映像。 6 * 7 * 磁盘布局 8 * * 引导加载程

  • 剑指 Offer 15. 二进制中1的个数2021-11-05 15:32:43

    来源:剑指 Offer 15. 二进制中1的个数 问题描述: 解题分析: 1.自己的方法报错了 我自己想的就是先将其转化为字符串,然后数一数1的个数,结果不对,但是我调试的时候,发现结果是对的呀!!! 无法理解,太玄幻了,先放在这里吧! class Solution { public: int hammingWeight(uint32_t n) {

  • 有趣的时间任务,简单时分的多任务实现2021-11-05 11:03:29

    控制控制每个函数每秒执行次数。 方法1相对方法2更整洁,不用每次在时钟中断里添加新的计数值。减低代码间耦合,非常nice! 方法1: void __attribute__((interrupt)) _SysTick_exception (void) { SYSTICK_Counter_Updata(); SysTick++; } //关键函数:计时判断。 uint32_t IsS

  • 手撕STM32库函数工程(1)--自建stm32f10x.h2021-11-01 12:02:56

    手撕STM32库函数工程(1)–自建stm32f10x.h 文章目录 手撕STM32库函数工程(1)--自建stm32f10x.h**0. 准备工作及工程文件概览:****0.1 新建一个keil_LED工程文件夹**0.2 在keil_LED文件夹中建立一个keil点灯工程:xxxx**0.3 keil工程中最终包含以下四个文件:** 1、建立Keil工程**1.

  • STM32个人学习记录(3)库函数过渡(PC13led灯寄存器地址封装版本、结构体版本)2021-10-30 18:03:49

    (本文仅为记录本人的学习过程以供个人复习、查询等。如有错误欢迎交流指正,本人不胜感激!) 此篇为更好的理解并使用库函数而进行的过渡。 目录 寄存器地址封装优化 代码部分 讲解部分         stm32f103x.h         main.c         寄存器地址结构体封装

  • FreeRTOS任务通知2021-10-29 09:32:24

    从FreeRTOSv8.2.0版本开始,FreeRTOS新增了任务通知(Task Notifictions)这个功能,可以使用任务通知来代替信号量、消息队列、事件标志组等这些东西。使用任务通知的话效率会更高。 一、任务通知简介 任务通知在FreeRTOS中是一个可选的功能,要使用任务通知的话就需要将宏configUSE_

  • HC32L17x的LL驱动库之cortex2021-10-28 09:30:30

    #ifndef HC32L1XX_LL_CORTEX_H_ #define HC32L1XX_LL_CORTEX_H_ #ifdef __cplusplus extern "C" { #endif #include "hc32l1xx.h" /// //===系统滴答定时器的时钟源 #define LL_SYSTICK_CLKSOURCE_XTL 0U #define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL

  • leetcode刷题笔记2021-10-22 20:02:47

    1 190.颠倒二进制位 方法一:逐位颠倒法 uint32_t rev = 0; 声明rev变量用32位无符号类型存储;(n & 1) 取最后一位:将n与(000000000000000000000000000000000001)按位并;(n & 0) 对最后一位取反:<< (31 - i); 左移31-i位移位运算比按位或/并优先级高;n >>= 1; n右移一位后赋值给n【n

  • PHP Zval结构2021-10-22 19:59:09

    变量的内部实现 变量是一个语言实现的基础,变量有两个组成部分:变量名、变量值,PHP中可以将其对应为:zval、zend_value,这两个概念一定要区分开,PHP中变量的内存是通过引用计数进行管理的,而且PHP7中引用计数是在zend_value而不是zval上,变量之间的传递、赋值通常也是针对zend_value。 P

  • 2021/10/13 智能家具 嵌入式实训 第三天 编写Systick代码 (5)2021-10-15 11:33:11

    先写Systick.h extern关键字 用法 #ifndef _SYSTICK_H_ #define _SYSTICK_H_ #include "stm32f10x.h" extern uint32_t TASK_Test[2]; uint8_t Systick_Config(uint32_t load); void Delay_Sys_nms(uint8_t time); #endif 定义一个外部变量  TASK_Test【2】 uint32_t 型号

  • 反调试--CRC检测2021-10-09 23:31:40

    #include"CRC32.h" #include<Windows.h> #include<iostream> using namespace std; void test1() { int a = 1; cout << "1111111111111111111111" << endl; } void Crc32Test() { char *buffer=(char*)GetModuleHan

  • RTX笔记9 - 消息队列Message Queue2021-10-04 20:03:13

      消息传递是线程之间的另一种基本通信模型。在消息传递模型中,一个线程显式地发送数据,而另一个线程接收数据。操作更像是某种I/O,而不是直接访问要共享的信息。在 CMSIS-RTOS 中,这种机制称为消息队列。和fifo的操作类似,数据从一个线程传递到另一个线程。使用消息队列功能,您可以控

  • RTX笔记7 - 信号量Semaphores2021-10-04 19:00:58

      信号量用于管理和保护对共享资源的访问。信号量非常类似于互斥锁。互斥锁一次只允许一个线程访问一个共享资源,而信号量可以用来允许固定数量的线程/ISR访问共享资源池。通过使用信号量,可以管理对一组相同外设的访问(例如多个DMA通道)。   信号量对象应该初始化为可用令牌的

  • RTX笔记5 - 事件标志组 event flags2021-10-03 19:02:19

      事件标志组用于线程间同步,每一个事件标志组都有31个时间标志位(除最高位)。    osEventFlagsId_t osEventFlagsNew (const osEventFlagsAttr_t *attr):     创建一个事件标志组,返回时间标志ID 或者 NULL。不可在中断中调用。 osEventFlagsAttr_t Data Fields const c

  • RTX笔记4 - 线程标志组 thread flags2021-10-03 18:36:12

      线程标志组是在线程创建的时候,一起创建的一种专用事件标志组,包含在线程控制块内。线程标志组可以用于线程同步,而不需要花费额外的资源。   uint32_t osThreadFlagsSet (osThreadId_t thread_id, uint32_t flags)     设置线程thread_id的标志位flags,返回设置后的线程标

  • STM32复习笔记(五) —— GPIO锁定机制2021-10-03 11:00:20

    STM32复习笔记(五) —— GPIO锁定机制 1.GPIO 锁定机制 锁定机制可以锁定 IO 口的配置,锁定一个端口位之后,直至下一次复位之前,将不能再更改端口位的配置 2.本例程软件设计思路 1)初始化时即锁定 GPIOB 的 GPIO_Pin_0 配置 2)确认锁定后再尝试修改 GPIOB 的 GPIO_Pin_0 配置为

  • STM32复习笔记(四) —— 按键翻转LED2021-10-03 09:32:56

    STM32复习笔记(四) —— 按键翻转LED 1.本例程软件设计思路 1)选定 GPIOA GPIO_Pin_0 控制 LED ;选定 GPIOB GPIO_Pin_0 作为按键输入 2)配置 LED GPIO 为推挽输出,速率10MHz 3)配置 KEY GPIO 为浮空输入,本例因使用软件仿真,无法使用输入功能 (或未得知如何使用),则将 KEY GPIO

  • 类型转换注意事项2021-09-30 10:31:57

    被转换的类型建议用括号包含起来 #define WRITE32  (*(volatile uint32*) ((unsigned long) addr) = (uint32)(data)) 建议改成 (*(volatile uint32*) ((unsigned long) (addr)) = (uint32)(data)) 否则,在做WRITE32(addr + i)时,会出现访问预期之外的地址

  • multiple definition of的问题2021-09-26 01:31:47

    今天写代码遇到一个重定义的问题,我的代码目录如下 ├── store_node │   ├── CMakeLists.txt │   ├── config │   │   └── config.ini │   ├── init │   │   ├── statusdb.cpp │   │   └── statusdb.h │   ├── main.cpp │ 

  • stm32f103系列中对寄存器地址的实现2021-09-23 20:02:31

    要操作寄存器,实际是操作对应地址的数据。如GPIOA->ODR = 0,将GPIOA的所有端口输出置位0. 那在CMSIS(cortex microcontroller software interface standard)中是如何实现的? 首先将GPIO相关的寄存器定义为一个结构体. typedef struct { __IO uint32_t CRL; //#define __IO volit

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有