精华内容
下载资源
问答
  • LL4148 LL34 YONGYUTAI.PDF

    2021-06-08 13:38:39
    LL4148 LL34 YONGYUTAI
  • matlab开发-LL2UTMandUTM2LL

    2019-08-22 10:12:27
    matlab开发-LL2UTMandUTM2LL。经纬度与UTM坐标的精确和矢量转换。
  • 2018.1.19 HAL库详解见STM32之HAL库详解 及 手动移植 STM32 Embedded Software ...前两者都是常用的库,后面的LL库是ST最近才添加,随HAL源码包一起提供,目前支持的芯片也偏少。各库如下所示:   其
    • 2020.2.4: 更新内容

    STM32 Embedded Software

      工作以来一直使用 ST 的 STM32 系列芯片,ST 为开发者提供了非常方便的开发库。到目前为止,有标准外设库(SPL 库)、HAL 库、LL 库 三种。前两者都是常用的库,后面的 LL 库是 ST 最近才添加,随 HAL 源码包一起提供,目前支持的芯片也偏少。各库如下所示:
    库
      其中,SPL 库 和 HAL 库两者相互独立,互不兼容。几种库的比较如下:
    库比较
      目前几种库对不同芯片的支持情况如下:
    在这里插入图片描述
      ST 中文官网上有一篇《关于ST库函数的代码性能对比》的文章,其中对比了各种库的性能如下:
    在这里插入图片描述

    STM32 Snippets

      它是代码示例的集合,直接基于 STM32 外设寄存器,可在文档和软件包中使用。由于处在最底层,因此需要开发者直接操作外设寄存器,对开发者要求比较高,通常针对于对汇编程序比较了解的资深嵌入式工程师!
      这个库使用比较少,目前只在 STM32F0 和 STM32L0 系列中有提供。两个库都有各自的说明文档。主要就是下图所示的这些:
    在这里插入图片描述
    严格来说,它不能称为库,仅仅就是将 MCU 中的寄存器进行了结构化的封装,库文件主要就是一些 .h 文件。如下是对 ADC 的封装

    /**
      * @brief Analog to Digital Converter
      */
    
    typedef struct
    {
      __IO uint32_t ISR;          /*!< ADC Interrupt and Status register,                          Address offset:0x00 */
      __IO uint32_t IER;          /*!< ADC Interrupt Enable register,                              Address offset:0x04 */
      __IO uint32_t CR;           /*!< ADC Control register,                                       Address offset:0x08 */
      __IO uint32_t CFGR1;        /*!< ADC Configuration register 1,                               Address offset:0x0C */
      __IO uint32_t CFGR2;        /*!< ADC Configuration register 2,                               Address offset:0x10 */
      __IO uint32_t SMPR;         /*!< ADC Sampling time register,                                 Address offset:0x14 */
      uint32_t   RESERVED1;       /*!< Reserved,                                                                  0x18 */
      uint32_t   RESERVED2;       /*!< Reserved,                                                                  0x1C */
      __IO uint32_t TR;           /*!< ADC watchdog threshold register,                            Address offset:0x20 */
      uint32_t   RESERVED3;       /*!< Reserved,                                                                  0x24 */
      __IO uint32_t CHSELR;       /*!< ADC channel selection register,                             Address offset:0x28 */
      uint32_t   RESERVED4[5];    /*!< Reserved,                                                                  0x2C */
       __IO uint32_t DR;          /*!< ADC data register,                                          Address offset:0x40 */
    }ADC_TypeDef;
    
    typedef struct
    {
      __IO uint32_t CCR;
    }ADC_Common_TypeDef;
    

    在实际使用时,我们就可以结构化的访问 MCU 的寄存器,如下是配置 ADC 的函数实现:

    /**
      * @brief  This function configure the ADC to convert the internal reference voltage (VRefInt)
      *         The conversion frequency is 14MHz 
      * @param  None
      * @retval None
      */
    __INLINE void ConfigureADC(void)
    {
        /* (1) Select the clock mode (refer ADC_PRESCALER definition :
             HSI14 by writing 00 in CKMODE (reset value)
             DIV2 or DIV 4 */
        /* (2) Select the auto off mode */
        /* (3) Select CHSEL17 for VRefInt */
        /* (4) Select a sampling mode of 111 i.e. 239.5 ADC clk to be greater than 17.1us */
        /* (5) Wake-up the VREFINT (only for VBAT, Temp sensor and VRefInt) */
        ADC1->CFGR2 |= ADC_PRESCALER;                                   /* (1) */
        ADC1->CFGR1 |= ADC_CFGR1_AUTOFF;                                /* (2) */
        ADC1->CHSELR = ADC_CHSELR_CHSEL17;                              /* (3) */
        ADC1->SMPR |= ADC_SMPR_SMP_0 | ADC_SMPR_SMP_1 | ADC_SMPR_SMP_2; /* (4) */
        ADC->CCR |= ADC_CCR_VREFEN;                                     /* (5) */
    }
    

    标准外设库(Standard Peripheral Libraries)

      标准外设库(Standard Peripherals Library)是对 STM32 芯片的一个完整的封装,包括所有标准器件外设的器件驱动器。这应该是目前使用最多的 ST 库。几乎全部使用 C 语言实现。但是,标准外设库也是针对某一系列芯片而言的,没有可移植性。
    在这里插入图片描述
      相对于 HAL 库,标准外设库仍然接近于寄存器操作,主要就是将一些基本的寄存器操作封装成了 C 函数。开发者需要关注所使用的外设是在哪个总线之上,具体寄存器的配置等底层信息。
      相对于 STM32 Snippets,标准外设库对各外设的进行了一次封装,而不是仅仅局限在对寄存器的封装。实现了各外设的基本操作接口。
      在文档方面,我只发现了针对 F2 系列和 F3 系列的详细说明文档,如下图所示:
    在这里插入图片描述
    标准外设库的文件基本架构并不复杂。下图显示了 STM32F10xx 标准外设库文件的基本架构
    在这里插入图片描述
    其他系列的库文件结构和上图基本都是一致的!
      ST 为各系列提供的标准外设库稍微有些区别。例如,STM32F1x 的库和 STM32F3x 的库在文件结构上就有些不同,此外,在内部的实现上也稍微有些区别,这个在具体使用(移植)时,需要注意一下!但是,不同系列之间的差别并不是很大,而且在设计上是相同的。STM32 的标准外设库涵盖以下 3 个抽象级别:

    • 包含位,位域和寄存器在内的完整的寄存器地址映射
    • 涵盖所有外围功能(具有公共API的驱动器)的例程和数据结构的集合。
    • 一组包含所有可用外设的示例,其中包含最常用的开发工具的模板项目。

      关于更详细的信息,可以参考 ST 的官方文档,文档中对于标准外设库函数命名、文件结构等都有详细的说明。

    STM32Cube

      ST 为新的标准库注册了一个新商标:STMCube™。并且,ST专门为其开发了配套的桌面软件 STMCubeMX,开发者可以直接使用该软件进行可视化配置,大大节省开发时间。
    在这里插入图片描述
      这其中就包含了 HAL 库和最近新增的 LL 库。如下图:
    STM32Cube
      从上图不难看出,LL 库和 HAL 库两者相互独立,只不过 LL 库更底层。而且,部分 HAL 库会调用LL库(例如:USB驱动)。同样,LL 库也会调用 HAL 库
      用户可以使用 STMCubeMX 直接生成对应芯片的整个项目(目前主流开发工具的项目基本全支持),STMCubeMX 负责给整理各种需要的源码文件。

    注意:
      1. 个人感觉STMCubeMX生成的项目并不够简洁,源码的组织结构也并不是很好。
      2. STMCubeMX在生产项目时,可以选择使用HAL库或者LL库。但是部分组件的HAL库会调用LL库

    HAL 库

      HAL是 Hardware Abstraction Layer 的缩写,中文名:硬件抽象层。HAL 库是 ST 为 STM32 最新推出的抽象层嵌入式软件,可以更好的确保跨 STM32 产品的最大可移植性。该库提供了一整套一致的中间件组件,如 RTOS,USB,TCP/IP 和 图形 等。
      HAL 库是基于一个非限制性的 BSD 许可协议(Berkeley Software Distribution)而发布的开源代码。 ST 制作的中间件堆栈(USB 主机和设备库,STemWin)带有允许轻松重用的许可模式, 只要是在 ST 公司的 MCU 芯片上使用,库中的中间件(USB 主机/设备库,STemWin)协议栈即被允许随便修改,并可以反复使用。至于基于其它著名的开源解决方案商的中间件(FreeRTOS,FatFs,LwIP和PolarSSL)也都具有友好的用户许可条款。
      作为目前 ST 主推的外设库,HAL库相关的文档还是非常详细的。
    在这里插入图片描述
      可以说HAL 库就是用来取代之前的标准外设库的。相比标准外设库,STM32Cube HAL 库表现出更高的抽象整合水平,HAL API 集中关注各外设的公共函数功能,这样便于定义一套通用的用户友好的API函数接口,从而可以轻松实现从一个STM32产品移植到另一个不同的STM32系列产品。HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了,比如 F7 系列。目前,HAL库已经支持STM32全线产品。

      使用HAL库编程,最好尽量符合HAL库编程的整体架构。关于HAL库的详细介绍,可以参考后文 STM32 HAL库详解 及 手动移植

    LL 库

      LL库(Low Layer)是 ST 最近新增的库,与 HAL 库捆绑发布,文档也是和 HAL 库文档在一起的,比如:在STM32F3x 的 HAL 库说明文档中,ST 新增了LL库这一章节,但是在 F2x 的HAL文档中就没有。
      LL 库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。其支持所有外设。使用方法:

    • 独立使用,该库完全独立实现,可以完全抛开 HAL 库,只用LL库编程完成。在使用STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如 USB,则会调用 HAL 库
    • 混合使用,和 HAL 库结合使用。

    目前,CubeMX 在生成项目时,可以选择采用 LL 库。

      LL 库文件的命名方式和 HAL 库基本相同。个人感觉,LL 库就是原来的标准外设库移植到 Cube下的新的实现,但是其实现方法更加高效、简洁。使用 LL 库编程和使用标准外设库的方式基本一样,但是确会得到比标准外设库更高的效率。

    更详细的介绍,请参见博文《STM32 之十一 LL 库详解 及 移植使用说明

    参考

    1. STM32 Embedded Software Overview.pdf
    2. STM32库函数性能对比.pdf
    3. STM32F0xx Snippets firmware package.pdf
    展开全文
  • 科尔多瓦插件tsp650ll 蓝牙打印机TPS650LL的Cordova插件 尝试TSP650ll的CheckStatus功能 使用CheckStatus测试插件 TSP650ll.CheckStatus(1,onsucesscallback,onerrorcallback); 测试列印 TSP650ll.PrintHello(1,...
  • 关于1ll(1LL)的用法

    千次阅读 2019-09-17 19:43:51
    今天看代码时发现一句 ans += yes[i] * 1LL * (yes[i] - 1) / 2; 其中用了1LLLL其实代表long long, * 1LL是为了在计算时,把int类型的变量转化为long long,然后再赋值给long long类型的变量。代码中有这一行,...

    今天看代码时发现一句 ans += yes[i] * 1LL * (yes[i] - 1) / 2; 其中用了1LL。LL其实代表long long, * 1LL是为了在计算时,把int类型的变量转化为long long,然后再赋值给long long类型的变量。代码中有这一行,long long ans = 0;
    ans是long long类型的,ans += yes[i] * 1LL * (yes[i] - 1) / 2;
    不至于后面计算溢出,* 1LL之后类型就转换为long long, yes内容是定义为int类型的。

    在进行类型转换的时候,在其他类型的数字后面乘以一个1LL,就可以避免强制转换时候的精度问题。

    举个例子:
    Distance
    链接:https://ac.nowcoder.com/acm/problem/14268
    来源:牛客网

    FST作为小朋友,经常会遇到和距离有关的问题,但是他已经厌倦了曼哈顿距离和欧几里德距离,所以FST就定义了一种FST距离。
    这种距离并不用于空间或平面中,而运用于FST发明的一些神奇的算法中(唔… …)。
    设i号元素的特征值为Ai,则i和j的FST距离是 |i2 - j2|+|Ai2 - Aj2|。
    为了实现某新的数据结构,FST想在一大堆元素中找出距离最大的一对元素,他不关心是哪一对元素,只想求出最大距离。

    牛客上的一道题,思路很好想,就是分成四种情况,将绝对值打开之后发现只有两种情况,讨论一下即可。这道题不是重点,重点是我WA了一发还完全不知道是因为什么。后来突然想到可能是存在精度问题,在式子中唯一一个不是ll类型的变量后面乘以一个1LL,他就A了,就是这么神奇,不相信的你可以把1LL删掉去试试。

    #include <cstdio>
    #include <cstring>
    #include <stack>
    #include <queue>
    #include <map>
    #include <set>
    #include <vector>
    #include <cmath>
    #include <algorithm>
    #include<bits/stdc++.h>
    using namespace std;
    const double N = 1e6+10;
    const double pi = acos(-1.0);
    const int INF = 0x3f3f3f3f;
    const int MOD = 1000000007;
    const inline int read(){
        int k = 0, f = 1; char c = getchar();
        for(;!isdigit(c); c = getchar())
            if(c == '-') f = -1;
        for(;isdigit(c); c = getchar())
            k = k * 10 + c - '0';
        return k * f;
    }
    #define ll long long
    #define CL(a,b) memset(a,b,sizeof(a))
    #define MAXN 100010
    long long int a[MAXN];
    long long int b[MAXN];
    long long int c[MAXN];
    int main()
    {
        int t;
        cin >> t;
        for(int i = 1 ; i <= t ; i++)
        {
        	scanf("%lld",&a[i]);
    	}
    	for(int i = 1 ; i <= t ; i++)
    	{
    		b[i] = 1LL*i*i+a[i]*a[i];
    		c[i] = a[i]*a[i]-1LL*i*i;
    	}
    	sort(b+1,b+1+t);
    	sort(c+1,c+1+t);
    	long long int res = abs(b[t]-b[1]);
    	if(res < abs(c[t]-c[1]))
    		res = abs(c[t]-c[1]);
    	printf("%lld\n",res);
    	return 0;
    }
    
    
    展开全文
  • C++中的1LL||1ll

    千次阅读 2021-02-03 22:11:40
    *最近做题的时候,看到有同学的代码里有写到...*里面写到1ll,就上网百度了一下,一般我们写成大写就好,1LLLL表示long long,而1LL的意思是把int类型转换成long long类型,也就是说tmp[j]变成了long long类型。 ...

    *最近做题的时候,看到有同学的代码里有写到这样一句tmp[j]=(1ll*tmp[j]*l+i)%mod;*里面写到1ll,就上网百度了一下,一般我们写成大写就好,1LL,LL表示long long,而1LL的意思是把int类型转换成long long类型,也就是说tmp[j]变成了long long类型

    展开全文
  • Linux命令之ll -rt和ll -sh

    千次阅读 2019-11-19 15:39:30
    ll -rt 按时间升序,如图 ll -sh 按文件大小,如图

    ll -rt  按时间升序,如图

     

     ll -sh 按文件大小,如图

    展开全文
  • ll209网页模板ll209

    2009-02-16 10:22:35
    自己收集的一些网页模板,希望大家喜欢!ll209网页模板ll209
  • ll命令报错-bash: ll: command not found

    千次阅读 2020-02-18 21:53:16
    报错信息 : -bash: ll: command not found root用户没有显示 普通用户下,即目录的拥有者,可以使用ll命令 报错原因: root用户在当前目录没权限,或者, ll 并不是Linux 下一个基本的命令,它实际上是ls -l 的一...
  • linux命令 ll信息详解

    万次阅读 多人点赞 2019-08-21 16:30:57
    在linux下使用“ls -l”或者“ls -al”或者“ll”命令查看文件及目录详情时,shell中会显示出好几列的信息。平时也没怎么注意过,今天忽然心血来潮想了解一下,于是整理了这篇博客,以供参考: 首先给出一张典型的...
  • STM32 LL库使用指南PDF

    2019-01-18 15:04:55
    STM32 LL库使用指南,最新版的LL库,PDF高清版。直接操作寄存器。。
  • STM32LL库系列教程(一)—— LL库概览及资料

    千次阅读 多人点赞 2020-07-07 17:18:21
    用过STM32的朋友,对于标准库 ...事实上,ST在推行HAL库的时候,逐渐停止了对于标准库的更新(新出的芯片以及不再提供标准库了),但他们也意识到了HAL库效率较低的问题,因此同时也推出了LL( *Low-layer* )**库**。
  • ll command not found 当ll 无法识别时解决办法

    万次阅读 热门讨论 2017-04-10 09:56:06
    ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便。如果要使用此命令,可以作如下修改:打开 ~/.bashrc找到 #alias ll=’ls -l’,去掉...
  • stm32ll库(law_layer)

    2018-12-17 15:43:21
    stm32 ll库使用手册,和ll库与hal库差异对比,和ll库如何建立工程等
  • stm32l4xx_ll_flash.rar

    2020-05-31 09:32:20
    STM32 之十二 FLASH 使用详解 及 LL 库 FLASH 驱动实现 的附件。完全仿照 ST LL库源码风格
  • ubuntu ll 命令

    千次阅读 2018-09-07 23:23:35
    ubuntu ll命令 1、用过 Redhat 或者Centos 的朋友应该很熟悉 ll 这个命令,就相当于 ls -l,但在 Ubuntu 中要么不能用,要么会显示隐藏文件,看起来很烦。 2、严格来说 ll 不是一个命令,只是命令的别名而已。很多...
  • ubuntu ll命令

    千次阅读 2016-06-16 12:48:12
    用过 Redhat 的朋友应该很熟悉 ll 这个命令,就相当于 ls -l,但在 Ubuntu 中就不行了。严格来说 ll 不是一个命令,只是命令的别名而已。很多 Linux 用户都使用 bash shell,对普通用户来说用得最多的就是命令补全 ...
  • 某些非 LL ( 1 )文法到 LL ( 1 )文法的改写 前面已经指出,构造确定的自上而下分析程序要求给定语言的文法必须是 LL ( 1 )文法,但是,并不是每个语言都有 LL ( 1 )文法。由 LL ( 1 )文法定义可知,若文法中含有左递归或...
  • STM32标准库转LL

    2017-09-15 10:29:06
    STM32标准库转LL库工具。需要JAVA和PERL。附带代码转换帮助手册,比较方便。 LL库资源很少,这个可以帮助少走一些弯路。
  • 编译原理之LL(1) 、LR(0)、SLR、LR(1)、LALR文法的对比

    万次阅读 多人点赞 2018-01-12 21:42:09
    考完编译原理有一段时间了,记得当时都被以上这五种文法搞懵了,所以希望写篇文章帮助那些...以下文章参考了:LL LR SLR LALR 傻傻分不清。 首先来看张图,上图是四种文法的包含关系,即 LR(1)文法范围最大...
  • 某些 非LL(1)文法 到 LL(1)文法 的等价变换 1.提取左公共因子 2.消除左递归(直接左递归、间接左递归) 不确定的自顶向下分析思想 确定的自顶向下分析方法 1.递归子程序法 2.预测分析法[判别LL(1)文法;构造预测分析...
  • 如:查看当前脚本运行路径下的文件信息 test.sh #!/bin/bash cur_path=`pwd` ll $cur_path 解决方法:使用ls -l (ll是ls -l的别名) #!/bin/bash cur_path=`pwd` ls -l $cur_path
  • ls、ls -a、ls -l、ls -al、llll -a区别

    千次阅读 2020-06-10 22:54:24
    ls ls -a ls -l ls -al ll ll -a ll -l ll -al
  • stm32 LL库对比标准库资料 stm32 LL库对比标准库资料 stm32 LL库对比标准库资料 stm32 LL库对比标准库资料
  • LL(1)预测语法分析器

    2018-06-01 14:05:59
    LL(1)预测语法分析器 LL(1)预测语法分析器 LL(1)预测语法分析器 LL(1)预测语法分析器
  • ll 命令排序详解

    千次阅读 2020-03-30 17:18:25
    ll 默认按照文件名字母顺序排序,A在最前 ll -SX 按照文件类型排序,扩展名首字母排序,文件夹最前 ll -St 按照创建时间排序,最近的最前 ll -SS 按照大小排序,最大的最前 =================================...
  • mac下ll命令使用

    千次阅读 2018-04-22 07:33:12
    Create a file named "~/.profile" and add the following line to it:alias ll='ls -lGh'Restart your terminal session。
  • Linux下创建ll命令

    千次阅读 2019-03-05 14:56:02
    ll命令其实是 ls -l 命令的快捷方式,很多Linux环境默认是没有ll这个快捷命令的,可以自己设置 找到 vim /root/.bashrc 命令配置文件 放开 alias ll='ls $LS_OPTIONS -l' 保存即可 ...
  • 实验三(LL parser)

    2011-12-14 11:53:38
    LL parser
  • linux命令——ll

    千次阅读 2019-06-13 09:16:36
    一、ll命令 ll并不是linux下一个基本的命令,它实际上是ls -l的一个别名。 Ubuntu默认不支持命令ll,必须用 ls -l,这样使用起来不是很方便。 如果要使用此命令,可以作如下修改: 打开 ~/.bashrc 找到 #alias ll...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,175,598
精华内容 470,239
关键字:

ll