
ARM学习
文章平均质量分 80
ARM学习笔记
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
kobesdu
物来则应,过去不留。
展开
-
0.39/0.5寸模拟视频及VGA视频OLED微显示屏驱动电路板及技术方案
0.39/0.5寸OLED微显示屏驱动电路采用intersil的TW8836为驱动芯片,STM32为控制芯片,实现了SONY的0.39/0.5寸微显示屏的驱动,色彩鲜艳,成像细腻。输入信号可以是CVBS模拟视频或VGA信号;输入电压为3.3-5v宽幅电压;驱动板尺寸做到28×28mm,便于光学系统设计和装配,能够满足大多数应用场景。并且具备6个I/O口和1个CMOS标准串行通信端口,可以通过按键对亮度、对比度,以及SONY 0.5寸微型显示器的亮度、对比度、显示方向及温度补偿等进行修改,同时也可以提供上原创 2021-01-27 14:39:10 · 536 阅读 · 1 评论 -
STM32的TIM1_CH1N反向引脚输出PWM波.txt
PB14 PB15是STM32的TIM1的反向引脚L11 H8 F2 35 53 75 PB14 I/O FT PB14 SPI2_MISO/TIM1_CH2NUSART3_RTS(8)/L12 G8 F1 36 54 76 PB15 I/O FT PB15 SPI2_MOSI/I2S2_SDTIM1_CH3N(8)/可以输出PWM波极性与TIM1_CH相反。代码如下/** ***********原创 2016-11-17 18:42:00 · 12141 阅读 · 0 评论 -
关于Rs485通信只能接收不能发送的问题
在485传输方向正确的前提下//MAX3485数据传输方向void MAX3485_DIRECTION(u8 direction){ if(direction == MAX3485_Send){ //高电平发送GPIO_WriteBit(MAX3485_DIRC_GPIO, MAX3485_DIRECTION_OUT, Bit_SET);delay_ms(原创 2016-08-18 19:31:56 · 20071 阅读 · 1 评论 -
stm32引脚默认状态
STM32中空的I/O管脚是高电平还是低电平取决于具体情况。1、IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定。2、STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高阻。做到低功耗。3、STM32的IO管脚配置口默认为浮空输入,把选择权留给用户,这是一个很大的优势:一方面浮空输入确保不会出现用户不希望的默认电平(此时电平取决于用户的外围电路);另一方面降低原创 2016-08-18 19:31:27 · 34592 阅读 · 1 评论 -
stm32通过SPI与adc124s021通信读取ad
/** * 配置用于操作ADC124S21的模拟SPI GPIO端口 */static void U11ADC124S021_GPIO_init(){ SPI_InitTypeDef SPI_InitStructure; //定义SPI结构体 GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO结构体原创 2016-08-18 19:26:39 · 11048 阅读 · 0 评论 -
STM32通过io模拟SPI与ADC124S021通信
/***************************** U11 *********************************/ //extern unsigned int ad_val;unsigned char ch_temp; #define AD_FF 1#define AD_ZF 2#define A...原创 2018-07-28 17:47:49 · 3017 阅读 · 2 评论 -
stm32启动文件
这是ST提供的3个启动文件,分别适用于不同容量的STM32芯片。 这三个文件为: startup_stm32f10x_ld.s startup_stm32f10x_md.s startup_stm32f10x_hd.s 其中,ld.s适用于小容量 产品;md.s适用于中等容量产品;hd适用于大容量产品; 这里的容原创 2016-08-18 19:25:17 · 1068 阅读 · 0 评论 -
串行AD芯片ADC12S021的时序问题
ADC124S0214 Channel, 50 ksps to 200 ksps, 12-Bit A/D Converter在接触ADC124S021这个芯片以前,我一直以为AD芯片都是串行输出的,好多个引脚(起码一位数字输出一个管脚吧)。这个我用手拿起来都费劲的10管脚小芯片居然是12位AD,还是4通道的。我第一次写单片机程序就要控制这个小东西,结果开始的时候时序还搞错了。偏偏原创 2016-06-15 20:14:57 · 4244 阅读 · 0 评论 -
keil uv5重命名工程的简单方法
有一个简单的办法。假设原来的工程文件名是first,在工程文件目录中,你可以看到很多主文件名为first的文件,其中有两个文件分别叫做:first.uvopt和first.uvproj。你只要把这两个文件的主文件名改成你需要的名字,例如second,变成second.uvopt和second.uvproj。其他first文件统统删除。原创 2016-06-15 20:13:41 · 13455 阅读 · 0 评论 -
stm32的ADC通道错乱原因分析
引脚J4.2连接电位器,发现电位器到端点时,会出现调试时中断,找不到芯片的现象。后发现是给芯片的电压高于3.3V把J4.3修改成3.3V后,又偶尔会出现通道错乱的情况。后发现是电流高于芯片单个引脚所能允许的最大电流5mA后修改成以下电路,问题解决在某些项目中,发现adc通道会相反。发现和adc初始化的位置有关系。相关代码如下MAX3485_USART_原创 2022-09-13 08:39:31 · 841 阅读 · 0 评论 -
keil调试 查看某一个gpio电平 等状态
1、 程序添加到工程中,编译通过。2、进入软件仿真模式。3、在外围设备peripherals一栏,选择相应端口。2、 3、 odr一栏中,对号代表对应的io口高电平,4、 各栏目解释端口配置低寄存器(GPIOx_CRL)(x=A..E)端口配置高寄存器(GPIOx_CRH)(x=A..E)端口输入数据寄存器(GPIOx_IDR)(x=A..E)端口输出数据原创 2016-05-18 18:43:46 · 29795 阅读 · 0 评论 -
STM32与AD7249通信失败原因
stm32与ad7249按照典型电路配置好后,通信不正常。原因是clr引脚没有按照datasheet的要求置低。 A CLR function is provided which sets theoutput to 0 V in both unipolar ranges and in the twos complement bipolar range, while with offse原创 2016-11-15 21:53:11 · 911 阅读 · 0 评论 -
DRV8848通道输出不正常原因
在使用DRV8848做直流电机的驱动时,发现两对通道只能有一路通道控制。DRV8848有并联模式,两对通道可以并联输出。要使两对通道分别输出,需要设置芯片退出并联模式。The two drivers can be used in parallel to deliver twice the current to a single motor. To enter parallel mo原创 2016-11-15 21:52:25 · 4071 阅读 · 1 评论 -
STM32与测温芯片ADT7410通过模拟SPI通信
#include "stm32f10x_gpio.h"#define GPIO_PORT_I2C GPIOC/* GPIO端口 */#define RCC_I2C_PORT RCC_APB2Periph_GPIOC/* GPIO端口时钟 */#define I2C_SCL_PIN GPIO_Pin_0 /* 连接到SCL时钟线的GPIO */#define I2C_SDA_PIN ...原创 2018-07-28 17:47:39 · 754 阅读 · 0 评论 -
am335矩阵按键驱动的使用
矩阵按键扫描原理(即当我们按下一个矩阵键盘的按键时,如何获取按键的位置)方法有2种,一种是逐行扫描,一种是行列扫描.接下来就主要讲讲行列扫描.行列扫描的话,就是一开始让p1口高4位输出高电平,低4位输出低电平,若这4行按键里,有按键按下了,那么那一行按键对应的io的电平就会被拉低,我们就可以知道按键的行坐标.获取按键列坐标的方法也是类似的,就是一开始让p1口高4位输出低电平,低4位输出...原创 2019-08-07 13:51:05 · 551 阅读 · 0 评论 -
linux添加需要图形界面的自启服务的办法总结
首先按照一些blog中的方法,使用systemctl命令添加自启服务,但是一直失败。尤其是奇怪的是,双击相应的服务脚本可以运行VNC,但是使用启动服务指令却不能启动VNC启动vnc服务systemctl start vnc.service没反应。。。设置开机自启动systemctl enable vnc.service 也不生效。。。折腾了n天后,使用查看服务当前状态指令才发现问题...原创 2019-05-27 17:06:50 · 1392 阅读 · 0 评论 -
VNC及RFB编码格式总结
远程帧缓冲(RFB Remote Frame Buffer)协议是一个用于远程访问图形用户界面的简单协议。由于 RFB 协议工作在帧缓冲层,因此它适用于所有的窗口系统和应用程序,RFB协议是一个真正的瘦客户端协议,能够运行在大量广泛的硬件平台上。遵守 RFB 协议的 RFB 客户端是一个无状态的客户端握手通过服务器向客户端发送一个协议版本信息包开始,客户端获得服务器支持...原创 2019-05-15 16:36:25 · 2250 阅读 · 0 评论 -
vnc静态编译的方法记录t
静态编译的办法Important(1)首先要把vnc需要的库按照动态编译的流程进行静态编译,静态编译的办法是./autogen.sh ./configure --enable-unix --build=i386-linux --prefix=$PREFIX --host=$HOST --enable-static-support --cache=arm-linux.cache...原创 2019-05-14 14:56:19 · 421 阅读 · 0 评论 -
debian系统上交叉编译VNC源码
除了使用vnc常规的编译流程之外,会报其他的错误(1)报错arm-linux-c++ -DX_DISPLAY_MISSING=1 -I../../common -O2 -Wall -c TXWindow.cxxTXWindow.cxx:22:23: fatal error: X11/Xatom.h: No such file or directory修改把交叉编译好的x...原创 2019-05-14 14:55:44 · 532 阅读 · 0 评论 -
debian上源码安装vnc的全纪录
在common/zlib文件夹下命令./configure--with-installed-zlib在vncsrc的common的文件夹下面 ./configure 提示错误configure: error: installation or configuration problem: C++ compiler cannot create executables.查看...原创 2019-05-14 14:55:06 · 690 阅读 · 0 评论 -
关于STM32的编码器计数及溢出处理调试总结
错误1、pc6 pc7被用作其他用途,GPIO模式配置错误。导致计数不准确;错误2、引脚模式设置错误,应该设置为GPIO_Mode_IPD;//GPIO_Mode_IPU GPIO_Mode_IN_FLOATING 都可以;错误3 引脚重映射没有开启AFIO时钟;总结关于编码器的溢出处理:网上的检测数值突变的方法不可靠,会有漏检的情况。在滴答定时器中检测encoder的值突变void SysT...原创 2018-03-29 13:13:12 · 16999 阅读 · 2 评论 -
keil调试时数组数值显示truncated
KEIL4里面,大于2048的数组在仿真的时候,在watch里查看,大于2048的会被truncated裁剪掉大于2048可以用,但仿真只能显示2048;原创 2017-09-25 19:57:29 · 4464 阅读 · 1 评论 -
keil编译提示Execution region RW_IRAM1 size (65552 bytes) exceeds limit (65536 bytes). Region contains 16
.\Objects\IRCryogen_App.axf: Error: L6220E: Execution region RW_IRAM1 size (65552 bytes) exceeds limit (65536 bytes). Region contains 16 bytes of padding and 0 bytes of veneers (total 16 bytes of link原创 2017-09-25 19:56:52 · 15998 阅读 · 1 评论 -
ucos系统使用delay函数死机原因
delay函数,占用了stm32的时钟ucos需要靠stm32的时钟来调度任务用裸机得delay就剥夺了ucos的时钟,所以死机ucos ii 系统应该使用OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err)函数做延时原创 2017-09-13 20:00:47 · 5498 阅读 · 2 评论 -
keil编译出现function abs declared implicitly的解决方法
USERsrcSHR_RGLV5K_main.c(536) warning #223-D function abs declared implicitly解决方法1 #include 解决方法2:在调用该函数的前头加了一句“extern double abs(double __x); ” 另外fabs函数不用加外部声明直接调用也没报警,偏偏是abs函数就有这个问题呢。看了看原创 2016-05-10 18:16:03 · 49239 阅读 · 2 评论 -
arm自动重启的原因
能导致复位的也就几种,硬件异常,看门狗复位或者PC指针被强制到0,如果没有看门狗的话,可以看看cpu的供电和reset管脚是否出现了异常。软件的问题,堆栈只是一部分,中断保护,内存越界等等问题都会造成异常。未定义异常就是由于PC指乱了地方,导致CPU将data取来作为指令,而指令不存在才产生的。原创 2016-04-25 19:25:38 · 3477 阅读 · 0 评论 -
两个STM32之间进行SPI通信
采用双向通信模式,主机mosi—从机的mosi主机从机配置一致。从机的片选引脚要设置成浮空输入。主机片选引脚设置成推挽输出主机配置void MB90092_CS_Configuration(void){ GPIO_InitTypeDef MB90092_CS_GPIO_InitStructure; /* GPIOC Periph clock enable */原创 2016-03-24 15:42:00 · 12409 阅读 · 2 评论 -
.\ethercat.axf: error: L6047U: The size of this image (33488 bytes) exceeds the maximum allowed for
表示我们的软件注册没成功,可能平时用51单片机都能正常编译程序,这时会质疑为什么STM32 的程序编译不通过呢,其原因是我们以前使用的是51单片机的编译,而现在是STM32 。我们应该从新破解原创 2015-01-20 15:36:39 · 19283 阅读 · 1 评论 -
STM32学习笔记(7):USART串口的使用
STM32学习笔记(7):USART串口的使用2011年4月19日USART串口通信1.串口的基本概念在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能原创 2015-08-27 09:19:33 · 4953 阅读 · 0 评论 -
STM32时钟库函数RCC_DeInit介绍
void RCC_DeInit(void){RCC->CR |= (uint32_t)0x00000001; //开启内部8MHz时钟#ifndef STM32F10X_CL //STM32F10X_CL指的是STM32互联系列微处理器 RCC->CFGR &= (uint32_t)0xF8FF0000; //其它类型处理器的CFGR寄存器中27-31位是保留位,24-26为MC原创 2015-03-21 11:15:51 · 5231 阅读 · 1 评论 -
stm32 RCC 时钟分析
stm32芯片手册上有张图表示的很清楚,一共有4个时钟源:1.HSI(内部高速时钟 8MHz)提供可以位系统时钟提供时钟源2.HSE(外部高速时钟)可以提供系统时钟和RTC时钟时钟源3.LSE(低速外部时钟32.768kHz)可以为可以为RTC提供时钟源4.LSI(低速内部时钟)可以为独立看门狗提供时钟源首先分析一下ST公司给的库函数:我用的是3.5的库我们原创 2015-03-21 17:04:07 · 2690 阅读 · 0 评论 -
warning:function "bsp_read_word" declared implicitly错误原因
这是由于没有声明函数原型造成的。在a.c中,void main(){.....delay();....}在b.c中void delay(){}如果就只是这样的话,就会出现上面的worning的。解决办法是在b.h中写 extern void delay();然后在a.c中include "b.h"就ok了。再看程序,发现只包含了DSP281x原创 2014-12-30 16:57:23 · 2117 阅读 · 0 评论 -
keil出现错误declaration is incompatible
错误来源.\ECAT\inc\STM32appl.h(38): error: #147: declaration is incompatible with "unsigned shortnPdInputSize" (declared at line 396 of ".\ECAT\inc\ecatslv.h") extern UINT16 nPdInputSize;.\ECAT\inc原创 2014-12-30 16:30:53 · 52069 阅读 · 0 评论 -
MDK常见报错(编译arm)
工作后从单片机转成ARM,刚开始用ADS1.2编译器,用了一段时间,因为我接手的项目的老程序正是用ADS编译的,部门也大都在用.在学单片机的时候用的是keil c51编译器,ads和这个编译器在易用性上真是无法比较.后来渐渐知道keil已经被arm公司收购,现在keil MDK成为了arm官方编译器,所以决定重新投奔keil,利用平时的时间,将原程序重新用mdk编译.mdk的优点就没必要说了,转载 2014-12-12 13:34:47 · 1950 阅读 · 0 评论 -
ARMstudyNote
在ARM程序的开发中,需要大量读写硬件寄存器,尽量缩短程序的执行时间,因此部分初始化代码一般使用汇编语言来编写,比如ARM的启动代码,ARM的操作系统的移植代码等,除此之外,绝大多数代码可以使用C语言来完成。C语言使用的是标准的C语言,ARM的开发环境实际上就是嵌入了一个C语言的集成开发环境,只不过这个开发环境和ARM的硬件紧密相关。ARM使用C语言编程基本规则在应用系统的程序设计中,原创 2014-12-26 18:01:44 · 1068 阅读 · 0 评论 -
定制keil开发环境
1.首先是汉化 keil一般都有0XFD的bug,这个是对汉字的支持不好,要想修正也不难其实我用十六进制软件比如UltraEdit 安装网上提供的方法就可以修复了 修复0xfd BUG。 用十六进制编辑软件如UltraEdit打开c51.exe和cx51.exe(这两个文件是相同的,名字不同),搜索80FBFD,改为80FBFF即可。 c51.exe位置:K原创 2014-12-04 16:56:48 · 1425 阅读 · 0 评论 -
Keil 出现No Browse information available
选中target1,然后点击右键,选择 option for target 'target1' ,在弹出的对话框中选择output选项卡,看Browse information 选项有没有勾选,如果没有,请勾选,然后把你的工程rebuild 一次。原创 2014-12-04 16:48:24 · 46100 阅读 · 11 评论 -
FPGA与STM32串口通信
FPGA中,添加一个TTL串口;与STM32串口通信引脚相连。波特率一致; FPGA: void uart_stm32_isr(void *context,alt_u32 id)//中断服务函数{ //i1=0; alt_u16 status9; do { status9 =IORD_ALTERA_AVALON_UART_STATUS(UA原创 2015-09-28 17:28:22 · 13772 阅读 · 2 评论 -
关于手机、电脑、单片机等的架构、速度和相关术语
总结接触了不少芯片,但是一直不太明白处理器架构、处理速度等。用过的芯片有赛灵斯的zynq7000、飞思卡尔的MC9S12、51、STM32F103\STM32F407;对速度,性能并没有系统了解。 1、ARM是处理器的架构、2、手机大部分也采用ARM架构;3、zynq是采用 cortex-A9,是一个比较高端的,以前单核智能机即是这种架构;4、STM32F103\S原创 2015-10-10 15:48:17 · 2537 阅读 · 1 评论 -
stm32的SPI总结
引脚介绍SPI 包含 4 条总线,SPI 总线包含 4 条总线,分别为——SS 、SCK、MOSI、MISO。它们的作用介绍如下 :1)SS ( Slave Select):片选信号线,当有多个 SPI 设备与 MCU 相连时,每个设备的这个片选信号线是与 MCU 单独的引脚相连的,而其他的 SCK、MOSI、MISO线则为多个设备并联到相同的 SPI 总线上,见图 15- 1。当原创 2016-03-24 15:41:11 · 19957 阅读 · 1 评论