- 博客(10)
- 收藏
- 关注
原创 ucos查找最高优先级任务
ucos调度器任务之一:从就绪列表中查找优先级最高的任务。提示几点:1、优先级值越小,优先级越高;2、就绪表(数组)的位置关联优先级,如OSRdyTbl[0] bit0的优先级是最高的;3、OSUnMapTbl[]的原理不再赘述,其作用就是找出一个byte(7 bit)中被置1的最低位。如 6 = 00000110b ,bit 1 和 bit 2 都被置1,bit1低于bit2,因此 1 会被填到OSUnMapTbl对应位置(bit x则填x)。因为bit1的值比bit2小,其任务的优先级一定高于b
2020-09-03 10:47:54
827
1
原创 寄存器reg &= ~1 位与操作的问题
在网上偶尔看到一个关于寄存器某位清零的操作,有人指出如题写法并不健壮,此博客记录。问题的关键在于 ~1 的值,假设 1 占8位(由编译器决定),二进制表示为 0000 0001那么~1的值为 1111 1110此时与一个寄存器 & ,确实可以将第 0 位清零,且确保[7:1]位不变。但是如果该寄存器超过8位,比如16位,``那么在做位与操作时 ~1 会被在前自动补0,此时 ~...
2020-08-28 09:16:01
685
原创 8位单片机做多位乘除操作
8位单片机做多位乘除操作今日在8位单片机中做乘除运算,简化代码如下 unsigned char a = 100; unsigned char b = 120; unsigned char result = 0; result = a*b/120; printf("result = %d", result);以上代码在x86中运行无误,但在8位单片机中:如果操作数高于8位,或者运算过程中产生了高于8位的数,易产生错误。例如 100*200 > 256 已经超过8 bit.所有操作数
2020-08-24 16:52:46
1807
原创 arm-linux-gcc编译关于typedef的error:expected '=', ',', ';', 'asm' or '__attribute__' before 'function'
1、arm-linux-gcc编译报error:error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fuction’2、先说明工程结构:每一个.c文件都对应一个.h文件,有一个include.h包含所有的其他.h文件:#ifndef __INCLUDE_H#define _INCLUDE_H/* .h头文件包含 ...
2020-04-17 17:25:22
2339
原创 mini2440烧写准备
1、oflah、eop、串口工具https://www.cnblogs.com/panrongfeng/p/9484352.html2、u-boot的usb烧写功能必须要先烧写一个支持usb下载功能的u-boot,Friendly ARM资料中的u-boot不支持,用以下这个:链接:https://pan.baidu.com/s/16LylQAfrAhSV0vIJJ1Q6uw 提取码...
2020-04-16 10:32:07
312
原创 keil缺少括号:error:#130:expected a “{“
用 keil 写了个STM32的程序,编译时遇到 error:#130:expected a "{“ ,除此之外还给我报了30多个errors,全部指向 stdio.h 。后来在正点原子的论坛上找了许久,终于看到一个靠谱的,链接如下http://www.openedv.com/posts/list/4409.htm问题就在于我一个 xx.h 里声明的一个函数没有加分号!MDK 真的是一个...
2019-11-20 09:02:35
2680
原创 I2C信号采集问题
I2C信号采集问题无意中看到有关I2C信号采集问题,不保证正确,只做记录。先说结论,I2C在SCL保持为高电平时,采集2次数据。先复习两点:1、SCL为高期间:SDA 高—>低 是start信号,SDA 低—>高 是stop信号;2、传输一个bit时,SCL须为高电平,且SCL为高电平期间SDA电平不能发生变化,只能在SCL为低时变化。对于第2点,假如SCL为高期间SDA...
2019-11-15 17:09:57
2309
原创 Windows无法安装驱动原因总结
目前遇到过两种情况:1、启用了数字签名:在系统更新——恢复 中重启,禁用强制数字签名,这是一次性的,网上似乎有永久禁用的方法,没试过管不管用。2、已找到驱动程序,但在安装时遇到错误:Services.msc中打开Device Install Service 和 Device Setup Manager...
2019-09-05 14:40:55
4431
原创 int n 与 static int n 的区别
int n 与 static int n 的区别如下代码:get_n()中定义的 int n 是局部变量,存储在栈中,生命周期为一次函数get_n函数的执行;get_static_n中定义的 static int n 是静态变量,存储在静态数据区,生命周期是整个程序的执行过程。#include <stdio.h>void get_n(void){ int n = 5;...
2019-09-05 13:35:53
7639
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人