内核入门(七)——中断管理
中断管理一、Corte-M架构基础1.1 寄存器简介1.2 操作模式和特权级别1.3 NVIC1.4 PenSV二、RTT中断工作机制三、中断管理 中断指计算机CPU获知某些事,暂停正在执行的程序,转而去执行处理该事件的程序,当这段程序执行完毕后再继续执行之前的程序。整个过程称为中断处理,简称中断,而引起这一过程的事件称为中断事件。中断是计算机实现并发执行的关键,也是操作系统工作的根本。 ...
内核入门(八)——内核移植
内核移植一级目录 内核移植就是指将RT-Thread 内核在不同的芯片架构、不同的板卡上运行起来,能够具备线程管理和调度,内存管理,线程间同步和通信、定时器管理等功能。移植可分为CPU 架构移植和BSP(Board support package,板级支持包)移植两部分。一级目录...
RT-Thread引脚管理及IO设备模型
RT-Thread常用设备与驱动一、IO设备模型1.1 IO设备介绍1.1.1 IO设备模型框架1.1.2 IO设备模型1.1.3 IO设备分类1.2 创建和注册IO设备1.2.1 创建与删除1.2.2 注册与注销1.3 访问IO设备1.3.1 查找设备1.3.2 初始化设备1.3.3 打开和关闭1.3.4 控制设备1.3.5 读写设备1.3.6 数据收发回调二、PIN设备三、UART设备四、II...
合法括号序列判断C++ --牛客网
#includeusing namespace std;//方法:和数列比大小 找到适合位置 然后和左右两边谁比较近int main(){int N=0;cin>>N;int F[100]={0,1};int i=0;for(int i=2;i<100;i++){F[i]=F[i-1]+F[i-2];}int result=0;for(int i=0;i<100;i++){if(F[i]<=N&&F[i+1]>=N)...
Fibonacci数列 C++ 题目来源:牛客网
[编程题]Fibonacci数列Fibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacci数列就形如:0, 1, 1, 2, 3, 5, 8, 13, …,在Fibonacci数列中的数我们称为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。输入描述:..
另类加法 题目来源:牛客网
题目来源:w.nowcoder.com/practice/e7e0d226f1e84ba7ab8b28efc6e1aebc题目描述给定两个int A和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。测试样例:1,2返回:3思路两个数相异或的结果其实就是两个数相加(但其不进行进位)两个数相与的结果其实就是两个数相加后的进位的值异或:相异为1 相同为0与: 同时为1时为1eg:3->0011 9->10013^9->1010 sum3&.
井字棋 C++ 来源:牛客网
链接:https://www.nowcoder.com/questionTerminal/e1bb714eb9924188a0d5a6df2216a3d1?pos=19&mutiTagIds=639&orderByHotValue=0&questionTypes=000100题目:井字棋给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是..
求最大连续bit数 C++ 牛客网
1.题目链接:https://www.nowcoder.com/questionTerminal/4b1658fd8ffb4217bc3b7e85a38cfaf22.代码#include<iostream>using namespace std;int main(){ //思路:让n的每一位都和1相& 如果连续为1,则进行计数,如果不连续为1,则进行清零,每次计数发生变化,就进行相比,保留大的那个 int n=0; while(cin>>n)
最近公共先祖 C++ 牛客网
1.题目链接:https://www.nowcoder.com/questionTerminal/70e00e490b454006976c1fdf47f155d92.题目将一棵无穷大满二叉树的结点按根结点一层一层地从左往右编号,根结点编号为1。现给定a,b为两个结点。设计一个算法,返回a、b最近的公共祖先的编号。注意其祖先也可能是结点本身。测试样例:2,3返回:13.代码class LCA {public: int getLCA(int a, int b) { //
查找组成一个偶数最接近的两个素数 C++ 牛客网
#include<iostream>#include<cmath>using namespace std;//思路:偶数num由两个素数组成,那么这两个素数一定是一个比num的一半小的,一个比num的一半大的数//从num/2开始向两边找到最近的两个素数,就是符合题目要求的bool isPrime(int n){ int i=0; for(int i=2;i<=sqrt(n);i++){ if(n%i==0)//如果能被除了1和它本身的
二进制插入 C++牛客网
1.来源https://www.nowcoder.com/questionTerminal/30c1674ad5694b3f8f0bc2de6f005490?toCommentId=1459882.题目给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。测试样例:1024,19,2,6返回:11003.代码方法1:class BinInsert {pub
统计每个月兔子总数 C++ 牛客网
1.链接https://www.nowcoder.com/questionTerminal/1221ec77125d4370833fd3ad5ba723952.题目有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?本题有多组数据。输入描述:输入int型表示month输出描述:输出兔子总数int型示例1输入9输出342.思路开始时,对每个月的兔子数量自己手动进行计算,找规律,然后发现其数列是: 1、
[编程题]洗牌 牛客网
洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的最后一张牌,再放下左手的最后一张牌,接着放下右手的倒数第二张牌,再放下左手的倒数第二张牌,直到最后放下左手的第一张牌。接着把牌合并起来就可以了。 例如有6张牌,最开始牌的序列是1,2,3,4,5,6。首先分成两组,左手拿着1,2,3;右...
周排行