reset

STM32F0_HAL库驱动描述——基于F1的USART串口IT中断实现解析

给你一囗甜甜゛ 提交于 2020-03-15 18:44:36
从原子F103 HAL库基础串口例程来看HAL程序结构; 从main函数开始,首先是HAL库两个函数的初始化: HAL_Init(); Stm32_Clock_Init(RCC_PLL_MUL9); 解析HAL_Init() 分为四个部分: A:启用FLASH预取缓存区; B:设置中断组优先级(由于F0是M0系列的,因此没有组优先级一说); C:配置SYSTICK时钟; D:初始化低等级的硬件; HAL_StatusTypeDef HAL_Init(void) { /* Configure Flash prefetch */ #if (PREFETCH_ENABLE != 0) #if defined(STM32F101x6) || defined(STM32F101xB) || defined(STM32F101xE) || defined(STM32F101xG) || \ defined(STM32F102x6) || defined(STM32F102xB) || \ defined(STM32F103x6) || defined(STM32F103xB) || defined(STM32F103xE) || defined(STM32F103xG) || \ defined(STM32F105xC) || defined(STM32F107xC) /* Prefetch

SV通过DPI调用C

瘦欲@ 提交于 2020-03-14 15:41:24
Verilog与C之间进行程序交互,PLI(Programming Language Interface)经过了TF,ACC,VPI等模式。 使用PLI可以生成延时计算器,来连接和同步多个仿真器,并可以通过波形显示等调试工具。 通过PLI方式连接一个简单的C程序,需要编写很多代码,并理解多仿真阶段的同步,调用段,实例指针等概念。 PLI方式给仿真带来了额外的负担,为了保护Verilog的数据结构,仿真器需要不断的在Verilog和C之间复制数据。 SystemVerilog引入了DPI(Direct Programming Interface),能够更简洁的连接C,C++或者其他非Verilog的编程语言。 只要使用import声明和使用,导入一个C子程序,就可以像调用SystemVerilog中的子程序一样来调用它。 SystemVerilog和C语言之间传递的最基本的数据类型是int,双状态的32位的数据类型, 通过import声明定义C任务和函数的原型, 带有返回值的C函数被映射成一个systemverilog的函数(function), void类型的C函数被映射为一个systemverilog的任务(task)或者void 函数(function) 通过“DPI-C”引入的C函数, 可以直接在function中调用,但是只在该DPI被声明的空间内有效 ,

SV搭建验证环境

纵然是瞬间 提交于 2020-03-14 15:39:53
1)首先定义纯虚类Sv_object,主要实现下边两个function: 定义local static 变量nextobjectID; 虚方法 virtual function void copy(St_object that, CloneType clone_type = DEEP);在基类中复制都可以通过super.copy来迭代copy。 2)在Sv_object的基础上,实现对mailbox和event的封装。产生两个基类Sv_mailbox_wrapper与Sv_event_wrapper。其中event多用在进程的控制 (wait(event), event(trigger)等形式放在function内),mailbox主要用在transaction的传递。 3)在Sv_object的基础上,建立一个Sv_testobject的纯虚类,来作为验证环境中各个组件的基类,在该基类中实现4个funciton,start,stop,main,reset。利用 event将这几个funciton联系起来。这样便有了一个基本的控制流程。 4)Transaction类的建立,这个类不算验证环境中的构件,所以用Sv_object来extends。不过同样要在Sv_transaction这个类中建立基本的流程,比如: generate,execute,check

Box-sizing reset

无人久伴 提交于 2020-03-13 00:51:31
### Box-sizing reset 重置盒模型使得元素的宽度`width`和过高度`height`不会受它们的边框`border`和内边距`padding`影响 #### HTML <div class="box">border-box</div> <div class="box content-box">content-box</div> #### CSS html { box-sizing: border-box; } *, *::before, *::after { box-sizing: inherit; } .box { display: inline-block; width: 150px; height: 150px; padding: 10px; background: tomato; color: white; border: 10px solid red; } .content-box { box-sizing: content-box; } #### Demo https://codepen.io/hahazexia/pen/WYKQNV #### Explanation 1. `box-sizing: border-box`使得内边距`padding`和边框`border`的附加值不会影响元素的宽度`width`和高度`height` 2. `box

数列分块入门(最后一个难啊)

柔情痞子 提交于 2020-03-12 07:13:00
感觉这个不算科技吧,就是现在把操作降在块内了,算是暴力的优化 https://loj.ac/problem/6277 LOJ6277. 数列分块入门 1 对于这些数你有两种操作,0是区间+,1是区间查询 #include<bits/stdc++.h> using namespace std; #define N 50005 int m,belong[N]; int a[N],tag[N]; void change(int l,int r,int val) { for(int i=l;i<=min(r,belong[l]*m);i++) a[i]+=val;//将a块内剩余部分暴力更新 if(belong[l]!=belong[r]) { for(int i=(belong[r]-1)*m+1;i<=r;i++) a[i]+=val;//将b块内剩余部分暴力更新 } for(int i=belong[l]+1;i<=belong[r]-1;i++)tag[i]+=val;//将整块需要加的值更新上去 } int main() { int n; scanf("%d",&n); m=sqrt(n);//一块有几个 for(int i=1;i<=n;i++) belong[i]=(i-1)/m+1;//将每个值分到所给的块内 for(int i=1;i<=n;i++) scanf("%d"

Linux Shell脚本编程case条件语句

烈酒焚心 提交于 2020-03-11 18:55:00
1,判断一个数字是否则在1,2,3之中. #!/bin/bash read -p "pls input a number:" n case "$n" in 1) echo "变量是1" ;; 2) echo "变量是2" ;; 3) echo "变量是3" ;; *) echo "pls input a number between 1 and 3" exit; esac 2,多级 if语句改写 #!/bin/bash read -p "pls input a number:" n if [ $n -eq 1 ]; then echo "$n是变量1" elif [ $n -eq 2 ]; then echo "$n是变量2" elif [ $n -eq 3 ]; then echo "$n是变量3" else echo "pls input a number between 1 and 3" fi 3,if..else嵌套,实现 #!/bin/bash read -p "pls input a number:" n if [ $n -eq 1 ]; then echo 1 else if [ $n -eq 2 ]; then echo 2 elif [ $n -eq 3 ]; then echo 3 else echo "pls input a number [1-3]" fi

蓝桥杯嵌入式第十届省赛程序

最后都变了- 提交于 2020-03-11 14:00:34
第十届赛题程序部分较为简单,客观题相对较难。主要会用adc+led即可ok,本科组甚至没有用到EEPROM(本代码加入此功能将led灯信息,上下阈值存入EEPROM,reset后数据不丢失) 先看目录 初始化函数 头文件: 初始化程序 #include "stm32f10x.h" #include "lcd.h" #include "init.h" #include "i2c.h" void GPIO_Int(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD, ENABLE); //led GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10| GPIO_Pin_11 | GPIO_Pin_12| GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin

git版本回退

 ̄綄美尐妖づ 提交于 2020-03-09 08:19:30
git reset --hard HEAD 查看当前commit -m 的信息 git reflog 查看最近commit 提交的信息HEAD git reset --hard +‘要回退到的reflog HEAD版本’ enter完成回退 来源: CSDN 作者: 一撇一画 链接: https://blog.csdn.net/qq_42220283/article/details/104735758

【连载】【FPGA黑金开发板】NIOS II那些事儿--NIOS II 常见问题(FAQ)

。_饼干妹妹 提交于 2020-03-06 09:55:20
为了帮助初学者快速入门NIOS II,在此建立NIOS II FAQ,希望大家把自己遇到的问题提出来,然后在这里总结起来,以帮助以后遇到同样问题的人。 首先需要声明一点,下面部分问题来自网络,如果版权问题,请及时通知,我将会将其删除 在此提几点要求和规定: 1.此贴是NIOS II FAQ,所以不收录其他相关内容; 2.大家通过回帖方式进行提问,如果有其他人可以解决,也是通过回帖方式进行解决; 3.问题解决以后,我会将其编入这个贴内,然后将问题跟帖删除,避免跟帖过多的影响。 4.禁止在回帖中涉及与NIOS II无关内容,一经发现立即删除。 -------------------------------------------华丽的分割线---------------------------------------------------------------------- 1.NIOS能做浮点运算么? 答:NIOS可以进行浮点运算,完全可以替代MCU,时钟可以跑到100Mhz,比ARM7还要快,ARM7时钟一般为72Mhz左右。 2.NIOS是否可以不使用SDRAM和并行FLASH? 答:首先说明一下,SDRAM是用来运行程序的,FLASH是用来存储程序代码的(SDRAM掉电丢失,FLASH则不会),每次上电的时候,都需要将FLASH中的程序代码放到SDRAM中,然后再运行。

总结自己的Git常用命令

走远了吗. 提交于 2020-03-06 02:25:46
总结自己的Git常用命令 使用git也有一段时间了,把自己常用的命令用自己的描述记录起来,方便自己备忘也方便其他人参考。 目录: 最基本的命令 : git clone 拷贝并跟踪远程的master分支。跟踪的好处是以后可以直接通过pull和push命令来提交或者获取远程最新的代码,而不需要指定远程分支名字。 git submodule init git submodule update 参考示意图 HEAD 指向当前的commit 对象(可以想象为当前分支的别名),同时也用来表明我们在哪个branch上工作。所以当我们使用HEAD来操作指针的时候,其实就是不改变当前的commit的指向。 对照这张图来理解两段提交,工作区(working tree),暂存区(index)和 branch之间的关系 显示信息类命令 git ls-files -u 显示冲突的文件,-s是显示标记为冲突已解决的文件 git diff 对比工作区和stage文件的差异 git diff --cached 对比stage和branch之间的差异 git branch 列出当前repository下的所有branch git branch --a 列出local 和remote下的所有branch git ls-files --stage 检查保存在stage的文件 git log