![](https://img-blog.csdnimg.cn/20190528101821118.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
stm32和ARM
stm32和ARM相关知识
子非龙
这个作者很懒,什么都没留下…
展开
-
modbus 学习笔记
一、GFP 掩码GFP_ATOMIC:用来从中断处理和进程上下文之外的其他代码中分配内存。从不睡眠。可以用在具有原子性的地方,分配函数。 GFP_KERNEL:内核内存的正常分配。可能睡眠。在具有原子性的地方,不能用。 GFP_USER:用来为用户空间页来分配内存; 它可能睡眠。在具有原子性的地方,不能用。 GFP_NOIO、GFP_NOFS:这个标志功能如同 GFP_KERNEL, 但是它们增加限制到内核能做的来满足请求. 一个 GFP_NOFS 分配不允许进行任何文件系统调用, 而 GFP_转载 2021-07-11 20:46:13 · 158 阅读 · 0 评论 -
stm32 利用SIM800C模块定位再通过该模块http协议发送给服务器
1、http基本命令AT+SAPBR=3,1,"APN","UNINET" //CMNET移动 CNNET电信 UNINET联通 AT+SAPBR=1,1 //激活网络 一定要等到ok返回,否则出错 AT+HTTPINIT //初始化http网络 AT+HTTPPARA="CID",1 //设置回话参数 //设置域名给让模块解析 AT+HTTPPARA="URL","www.xiongyuchun.xyz:9999/Api/addDreamValueAPI.aspx?i...原创 2020-05-24 12:10:51 · 5999 阅读 · 1 评论 -
arm 编译相关命令arm-linux- (gcc/ld/objcopy/objdump)详解
在linux中输入vi Makefile 来实现创建Makefile文件注意:命令行前必须加TAB键例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件led.bin : crt0.S led.c arm-linux-gcc -c -o crt0.o crt0.c arm-linux-gcc -c -o led.o led.c arm...转载 2020-03-14 16:54:25 · 2562 阅读 · 0 评论 -
位置有关码和位置无关码详细解释
1、总体介绍代码的运行分为三个阶段:取指,译码,执行,而取指令肯定要知道代码地址,执行过程又包含对变量的读写,对变量的读写也得知道变量的地址吧,至于代码的地址和变量的地址怎么确定呢?答:由编译器确定,编译器确定地址分为两种形式,1、根据当前PC+偏移地址确定地址。2、直接用链接地址对于第一种方式,地址是动态的,会根据PC的值变化而变化,对于第二种方式就是固定为我们指定的链接地址...转载 2020-03-01 22:56:05 · 3314 阅读 · 2 评论 -
uboot 代码重定位(位置有关码)(存储地址,运行地址,链接地址)
Table of Contents1、代码启动过程简要分析2、存储地址,运行地址,链接地址2.1、存储地址2.2、链接地址2.3、运行地址2.4、链接地址和运行地址的区别3、位置有关码,位置无关码详细解释4、代码重定位参考文章:https://blog.csdn.net/lizuobin2/article/details/52049892#1、代...原创 2020-03-01 18:31:44 · 4950 阅读 · 1 评论 -
tiny4412之内存控制器寄存器配置(DDR3 SDRAM)(三)
Table of Contents一、CONCONTROL寄存器1.1、chipn_empty1.2、clk_ratio二、MEMCONTROL寄存器2.1、bl (Memory Burst Length)突发长度2.2、Number of Memory Chips 内存数量配置2.3、芯片数据位宽度2.4、内存类型(DDR DDR2 DDR3 LPDDR2-S...原创 2020-02-13 18:37:48 · 1224 阅读 · 1 评论 -
tiny4412之内存控制器工作时序(DDR3 SDRAM)(二)
Table of Contents一、SDRAM 简易工作流程二、tRCD 行列延迟RAS to CAS Delay三、 CL(RL,Read Latency)读取潜伏期四、tWR 写延迟五、突发长度--(Burst Lengths)六、预充电时间tRP七、刷新时间八、例说一、SDRAM 简易工作流程二、tRCD 行列延迟RAS to CAS Delay...转载 2020-02-12 18:56:21 · 1165 阅读 · 0 评论 -
tiny4412之内存控制器(DDR3 SDRAM)(一)
Table of Contents一、原理图解析1.1、jz24401.1.1、jz2440引脚说明1.1.2、地址(ADDR)引脚说明1.1.3、Bank引脚说明1.1.4、DQM引脚说明1.1.5、片选(CS)说明(决定寻址起始地址)1.1.2、jz2440内存大小计算方法1.2、tiny44121.2.1、tiny4412引脚说明1.2.2、D...原创 2020-02-09 22:56:39 · 1604 阅读 · 0 评论 -
ARM裸机之SD卡启动
一、SD卡接线及介绍SD卡主要引脚和功能:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT0~3:数据线,数据可以从卡传向主机也...原创 2019-12-04 16:57:51 · 329 阅读 · 0 评论 -
S5PV210之SDRAM初始化详解
https://blog.csdn.net/vanity_lost/article/details/52656528转载 2019-12-03 19:51:41 · 179 阅读 · 0 评论 -
FLASH存储器学习笔记
FLASH页块分析一般flash存储器以页和块为单位,页是最小单位,以多少字节为一页,读也是以页为最小单位读,在一个页内读取某个地址的数据而一块里面又分为多少页,一般块为最小擦除单元FLASH的读和写分析读:FLASH的读取一般是先发出页地址,再发出行地址,页地址代表在哪个页,行地址代表在页内哪个地址如果是连续读取的话,只需要发出起始地址即可,后面直接读就可以了,如果...原创 2019-11-17 11:30:37 · 1199 阅读 · 0 评论 -
SPI裸机驱动学习笔记
CPOL和CPHA详解CPOL 时钟极性表示时钟CLK线空闲状态时高还是低CPOL=0 空闲状态为低CPOL=1 空闲状态为高CPHA 时钟相位表示第一个还是第二个边沿采集数据CPHA=0 第一个边沿采集数据CPHA=1 第二个边沿采集数据SPI四种模式我们常用的是模式0和模式3,因为它们都是在上升沿采样数据,不用去在乎时钟的初始电平是什么,只要在上...原创 2019-11-14 21:24:15 · 420 阅读 · 0 评论 -
ARM 汇编学习——编写简单的ARM汇编程序
首先,我们先看一个简单的汇编程序: area ff,code,readonly ;声明代码段 code32 ;声明为32位ARM指令 entry ;声明程序入口start ;b指令 ;1.b 跳转范围+_ 32M b + 标号 ;b start ;b stop ;2.bl 子函数调用 ;会把预取指令的地...转载 2019-11-04 16:18:07 · 5061 阅读 · 0 评论 -
ARM 汇编操作外设寄存器四步法
;第一步:取地址 con data;第二步:从内存读取数据;第三步:位操作;第四步:写回内存LDR R1,=0x10000000 ; 取寄存器地址LDR R2,[R1]; 读取要操作的寄存器(内存)数据到寄存器a2ORR R2,R2,#0x00000001; 最低位置一STR R2,[R1]; //再把数据写回寄存器(内存)里面...原创 2019-11-04 14:59:43 · 897 阅读 · 0 评论 -
ARM时钟学习
Table of Contents英文单词时钟流程分析时钟树框图:MPLL/UPLL时钟最大值(看手册总预览部分)倍频公式三星官方推荐倍频MPLL(FCLK)值HCLK PCLK设置异步模式(手册注意事项提到)代码:英文单词PHASE LOCKED LOOP(PLL) 锁相环时钟流程分析时钟树框图:...原创 2019-04-24 21:32:58 · 582 阅读 · 0 评论 -
ARM之重定位和链接脚本
转自https://blog.csdn.net/wangweijundeqq/article/details/78453129转载 2019-04-23 21:01:58 · 205 阅读 · 0 评论 -
ARM--LCD控制原理笔记
目录LCD接口介绍:概念:2440LCD接口原理图解析:LCD显示图像原理:扫描:LCD时序:控制信号:时序图:时序图时间参数:LCD 控制器LCD接口介绍:概念:2440LCD接口原理图解析:①是时钟信号,每来一个CLK,电子枪就移动一个像素;②是用来传输颜色数据;③是垂直方向同步信号...转载 2019-03-28 17:33:03 · 1187 阅读 · 0 评论 -
arm汇编指令学习
ldr 常用情况:ldr r0, =0x53000000 就是把一个地址放入寄存器r0中 它常用地址赋值str 常用情况:str r1, [r0] 把r1里的内容放到r0寄存器里存放的地址所指向的空间:寄存器间接寻址msr这是设置中断异常的指令 msr cpsr_c, #0xd2 @ 进入中断模式 ldr sp...原创 2018-08-18 10:09:21 · 330 阅读 · 0 评论 -
arm汇编文件分析
.text @表示.global _start_start: ldr r0, =0x53000000 @ WATCHDOG寄存器地址 mov r1, #0x0 str r1, [r0...原创 2018-08-18 09:07:35 · 1084 阅读 · 0 评论 -
arm链接脚本学习
SECTIONS { . = 0x00; //表示当前地址为零,从零地址开始排放 .text : { *(.text) } .rodata ALIGN(4) : {*(.rodata)} .data ALIGN(4) : { *(.data) } .bss ALIGN(4) : { *(.bss) *(COMMON) ...原创 2018-08-18 08:47:29 · 728 阅读 · 0 评论 -
TI CC24X BLE学习笔记
状态转换图:转载 2019-06-28 20:44:24 · 193 阅读 · 0 评论 -
主流Wifi芯片简要介绍
简介其实,802.11n是可以达到...转载 2019-12-06 11:12:36 · 3352 阅读 · 0 评论 -
TCP 三次握手
1、TCP客户端要连接到TCP服务器,需要经过三个过程:以下是通过 Wireshark 抓取的三次握手数据包 No Time Source Destination Protocal Length Info 505244 28619.472565 192.168.123.41 19...转载 2019-06-30 16:47:59 · 561 阅读 · 0 评论 -
快速排序
void quick_sort(int* arr,int left,int right){ int low,hight; low=left; hight=right; key=arr[low]; if(left<right) { while(low<hight) { while(low<hight&&arr[hight]>=k...原创 2018-10-14 21:14:37 · 201 阅读 · 0 评论 -
stm32外扩外部sram学习笔记
在一般情况下stm32内部sram是足够使用的 MDK配置如下 但是有些时候内存是不够用的,比如用到ucgui的时候或者做大项目时就需要外扩sram,倘若你要把外部sram作为运行内存则可以做如下配置: 另外一种方法就是自己写malloc函数,正点原子的内存管理函数可以借鉴一下:__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribu...原创 2019-08-02 10:29:49 · 8321 阅读 · 0 评论 -
快速入门51单片机
有些学生觉得单片机很难学其实掌握入门方法也不难开发环境搭建,不用多说,看网上教程拿到51单片机该如何做? 首先打开看51单片机的管脚分布,51单片机是8个引脚一组,为什么是8个一组呢? 因为它是8位单片机,正好一个字节8位可以控制它 51单片机有4组(P1,P2,P3,P4)通用管脚,所以51单片机有4*8=32个通用管脚管脚有那么可怕吗? 其实通用管...原创 2018-05-09 09:08:55 · 8372 阅读 · 24 评论 -
内存管理实验笔记
定义内存池 ## //内部SRAM内存池 32字节对齐 说明一次取出32字节 效率高 __align(32) u8 mem1base[MEM1_MAX_SIZE]; _**_align(32)** u8 mem2base[MEM2_MAX_SIZE] attribute((at(0X68000000))); 定义管理内存池的表**虽然起到管理...原创 2018-04-30 16:08:40 · 1153 阅读 · 1 评论 -
ucos消息队列笔记
ucos消息队列与消息邮箱不同的是:消息队列事件结构体成员 &message 不只是指向一个消息的地址 而是指向一个(结构体)消息队列控制块OS_Q而在OS_Q的成员中OSQStart 成员指向了一个一个指针数组 *messagegroup[size] 这个是自己认为定义的 size的大小决定能存放的消息最大数量在创建消息队列是把*messagegroup c传递给创建函数*mess...原创 2018-04-29 20:04:31 · 357 阅读 · 0 评论 -
【常用模块】HC-05蓝牙串口通信模块使用详解(实例:手机蓝牙控制STM32单片机)
转自:https://blog.csdn.net/qq_38410730/article/details/80368485因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。但是就是这么一个很常见的模块,网上很多的博客写的都是错的,或者都是很不详细的。所以本...转载 2019-06-24 17:50:10 · 21267 阅读 · 9 评论 -
任意大小icon图标制作方法
Table of Contents第一种方法:image2lcd工具第二种方法:网站第一种方法:image2lcd工具第二种方法:网站放两网站第一:https://www.gaitubao.com/#第二:https://app.xunjiepdf.com/img2bmp方法是:先从图标网站下载图标,然后用改图宝改成自己相要的比例第二...原创 2019-06-07 21:39:37 · 2552 阅读 · 0 评论 -
stm32 USB学习笔记
发现csdn写博客的markdown很不好用,转到博客园了下面的文章希望对大家有帮助,高手绕道:https://www.cnblogs.com/shenLong1356/p/11287833.html...原创 2019-05-09 09:37:14 · 1676 阅读 · 0 评论 -
stm32 freertos erro ...../.../port.c 271
这种错误一般时任务溢栈造成的,解决办法:把栈改大点f_open() 经常错误解决办法:原创 2019-05-09 09:14:41 · 763 阅读 · 0 评论 -
stm32f4 usb学习笔记
/*** @brief USBD_Init* Initailizes the device stack and load the class driver* @param pdev: device instance* @param core_address: USB OTG core ID* @param class_cb: Class callback str...原创 2019-05-03 17:50:56 · 3662 阅读 · 0 评论 -
stm32 4g模块使用步骤
AT检测是否应答AT指令ATE0不回显AT+CPIN?查询SIM卡是否在位AT+CREG?查询GSM网络注册状态,确认找网成功AT+QIACT?查询激活状态AT+QIOPEN=1,0,"TCP","117.28.200.13",1001,0,2连接远程服务器...原创 2019-05-02 20:42:33 · 11309 阅读 · 0 评论 -
zigbee学习笔记
基本概念原创 2019-04-08 15:27:10 · 168 阅读 · 0 评论 -
stm32面试题
一、选择题1.Cortex-M处理器采用的架构是( D )(A)v4T (B)v5TE (C)v6 (D)v72.NVIC可用来表示优先权等级的位数可配置为是( D )(A)2 (B)4 (C)6 (D)83.Cor...转载 2019-03-21 10:17:19 · 17313 阅读 · 0 评论 -
stm32以太网LWIP学习笔记之UDP通信
初始化配置步骤第一:硬件底层DMA缓存以及以太网内存初始化if(ETH_Mem_Malloc())return 1; //内存申请失败 if(lwip_comm_mem_malloc())return 1; //内存申请失败u8 ETH_Mem_Malloc(void){ DMARxDscrTab=mymalloc(SRAMIN,ETH_RXBUFNB*...原创 2018-09-16 21:15:21 · 12095 阅读 · 1 评论 -
ucos在创建任务前的准备工作
采用方式三关中断 OS_CPU_SR cpu_sr=0;防止编译器产生警告 pdata = pdata; ucos初始化,完成ucos自身的一些任务操作 OSStatInit();进入临界区,创建任务时禁止被中断打断 OS_ENTER_CRITICAL();退出临界区 OS_EXIT_CRITICAL(); 开启ucosOSStart();...原创 2018-08-30 08:27:07 · 442 阅读 · 0 评论 -
正点原子探索者开发板自定义汉字显示取模方式及底层函数
汉字显示底层驱动函数//在LCD上的(x,y)处画点//color:点的颜色void LCD_Draw_Point(u16 x,u16 y,u16 color){ u16 temp; temp=POINT_COLOR; POINT_COLOR=color; LCD_DrawPoint(x,y); POINT_COLOR=temp;}//...原创 2018-07-08 20:12:17 · 3098 阅读 · 5 评论 -
ADC DMA多通道
补充上一次的主函数#include &quot;stm32f4xx.h&quot;#include &quot;usart.h&quot;#include &quot;delay.h&quot;#include &quot;led.h&quot;#include &quot;adc.h&quot;#include &原创 2018-07-08 19:54:56 · 1946 阅读 · 0 评论