ARM开发之linux字符型驱动的编写----LED驱动为例

相应头文件:#include<linux/module.h>  ---->模块化驱动的必须头文件#include<linux/kernel.h> ---->ARRAY_SIZE(),prink()#include<linux/fs.h>  ----> 文件操作集#include<linux/uaccess.h>  ----> copy_to_user(),copy_from_user()#include<linux/cdev.h>  ---->字符设备驱动的必须头文...

http://www.eeworld.com.cn/mcu/2019/ic-news021543247.html 发布时间: 2019-02-15



MDK S3C2440启动代码简单分析

ARM启动代码相当于我们电脑的BIOS,也就是ARM启动时对处理器的一些初始化及嵌入式系统硬件的一些初始化。由于它直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。一般包括:中断向量表,初始化存储器系统,初始化堆栈,初始化有特殊要求的断口,设备初始化,变量初始化等。 ;/*****************************************************************************/;/*S3C2440A.S: Startup file for Samsung S3C440A        &...
关键词: MDK S3C2440 启动代码

http://www.eeworld.com.cn/mcu/2019/ic-news021343181.html 发布时间: 2019-02-13



ARM 平台printf函数定位到uart输出介绍

1.1      ARM 串口输出函数uart_printfARM如果能使用C函数库自带的printf函数格式输出,那多方便,但是默认的printf都是定位到stdout终端,而不是串口,本文章讲述的是如何定位到ARM的串口。1.1.1     函数主要代码有在Mini2440开发板上验证过//*****************main.c*******************************#include"serial.h"int Main(){unsignedint plck_val = 500000...

http://www.eeworld.com.cn/mcu/2019/ic-news021343178.html 发布时间: 2019-02-13



【stm32f407】库函数

本文通过简单介绍 STM32库的各个文件及其关系,让读者建立 STM32库的概念,看完后对库有个总体印象即可1.1.1什么是 STM32 库?在 51单片机的程序开发中,我们直接配置 51单片机的寄存器,控制芯片的工作方式,如中断,定时器等。配置的时候,我们常常要查阅寄存器表,看用到哪些配置位,为了配置某功能,该置 1还是置 0。这些都是很琐碎的、机械的工作,因为 51单片机的软件相对来说较简单,而且资源很有限,所以可以直接配置寄存器的方式来开发。STM32库是由 ST公司针对 STM32提供的函数接口,即 API(Application Program Interface),开发者可调用这些...
关键词: stm32f407 库函数

http://www.eeworld.com.cn/mcu/2019/ic-news021243140.html 发布时间: 2019-02-12



STM32程序中if和#if的区别

(1)首先,if是条件语句,#if是预处理指令,功能相同,执行的时期不同(2)举例1:#define A 2#if A==2void foo(){   printf("A == 2");}#elsevoid foo(){   printf("A != 2");}#endifint main(){   foo();}举例2:这样会输出 A == 2如果改变#define A 2就可能会输出A != 2#if.   a#else    b#endif...
关键词: STM32 if if

http://www.eeworld.com.cn/mcu/2019/ic-news013143110.html 发布时间: 2019-01-31



STM32的UART读写及printf打印

0.摘要本文以STM32F1x系列单片机为例,主要介绍了串口的初始化、串口中断、接收/发送、串口调试等内容,也顺带讲到中断分组、半主机模式以及微库MicroLIB。1.串口初始化串口初始化主要包括对IO、USART和中断的初始化。根据STM32F1x手册RM0008的P166,USART在全双工模式下,发送口TX要配置成复用推挽输出,接收口RX要配置成浮空输入或上拉输入。此外,本文不使用USART的硬件流控制,所谓硬件流控制就是通过加入额外的引脚(RTS和CTS)来控制数据的收发过程,在数据传输之前确认收发双方均准备好才进行通信,用于防止接收缓冲区满而导致的数据丢失问题。/**********...

http://www.eeworld.com.cn/mcu/2019/ic-news012943066.html 发布时间: 2019-01-29



增强型单片机STC12C5A60S2输出各种频率方波信号

设时钟频率Fosc=18.432MHz,设计程序,从P1.0/CLKOUT2引脚输出频率为124.540KHz的时钟;从T0(P3.4)引脚输出频率为125KHz的时钟;从T1(P3.5)引脚输出频率为38.4KHz的时钟。解:使用STC12C5A60S2的可编程时钟输出功能完成所需要求。在下面的程序设计中(在此只给出C语言程序),T0、T1和独立波特率发生器BRT均工作在1T模式。程序编制如下:#include "stc12c5a.h"        //包含STC12C5A60S2的寄存器定义头文件void main(void){...

http://www.eeworld.com.cn/mcu/2019/ic-news012643033.html 发布时间: 2019-01-26



51单片机-存储

8051是传统的8位单片机,一般为256B 数据存储器RAM,4k程序存储器ROM (8052有384bytes的RAM,8K的ROM)在51系列中可定义的数据类型有data,idata,xdata,pdata,bdata: data:指芯片内核中地址0x00-0x7F的128个字节RAM区域和4个分组的R1-R7寄存器区域,所占用的区域,汇编ACC访问,可以直接读写,速度最快,生成代码小。idata:固定指前面0x00-0xFF的256个RAM,其中前128字节和data的128字节完全相同,但访问的方式不同。idata是用类似指针方式访问的。xdata:外部扩展存储,一般指外部0...
关键词: 51单片机 存储

http://www.eeworld.com.cn/mcu/2019/ic-news012643009.html 发布时间: 2019-01-26



STM32->UART

在使用STM32过程中,可能会因为没有定义好调试工具的连接管脚,例如JTAG和SW需要的管脚被程序重新初始化复用了,然后就没法调试变砖了,此时可以通过ISP的方式擦写flash,或者跳线重启,进入BootLoader模式用JLink下载新的程序或直接擦除MCU的flash,再把跳线改回来重启。通过串口printf打印输出,添加C语言标准库文件:#include "stdio.h"根据编译器定义改写相关函数#ifdef __GNUC__  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else  #d...
关键词: STM32 UART

http://www.eeworld.com.cn/mcu/2019/ic-news012642999.html 发布时间: 2019-01-26



关于在stm32中使用printf函数的问题

想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式)。标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf      ...
关键词: stm32 printf函数

http://www.eeworld.com.cn/mcu/2019/ic-news011742967.html 发布时间: 2019-01-17



STM32启动文件详细解析

一、STM32启动文件详细解析STM32启动文件详细解析(V3.5.0) 以:startup_stm32f10x_hd.s为例[cpp] view plain copy;******************** (C) COPYRIGHT 2011 STMicroelectronics ********************  ;* File Name          : ...
关键词: STM32 启动文件

http://www.eeworld.com.cn/mcu/2019/ic-news011742963.html 发布时间: 2019-01-17



LPC2013 中的启动文件cstartup.s 详解

操作系统:ucos-ii 2.52编译器:IAR 5.4 处理器: LPC2103cstartup.s 与 在LPC2103上跑裸机的启动代码 lpc2xxx_cstartup.s 基本上一样,只是改了一些标号而已。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Part one of the system initialization code,;; contains low-level;; initialization.;;;; Copyright 2006 IAR Systems. All rights rese...

http://www.eeworld.com.cn/mcu/2019/ic-news011742960.html 发布时间: 2019-01-17



LPC1788启动代码分析

在Keil uVision4中新建一个基于NXP1788的工程后,会提示添加启动汇编代码startup_LPC177x_8x.S。该文件进行从汇编到C语言运行环境的初始化工作。;/*****************************************************************************; * @file:    startup_LPC177x_8x.s; * @purpose: CMSIS Cortex-M3 Core Device Startup File; *        &nbs...
关键词: LPC1788 启动代码

http://www.eeworld.com.cn/mcu/2019/ic-news011742959.html 发布时间: 2019-01-17



arm7 LPC2103 中断的处理方法

向量中断控制器(VIC)具 有 32 个中断请求输入,可将其编程分为3 类:FIQ 、向量IRQ和非向量IRQ 。可编程分配机制意味着不同外设的中断优先级可以动态分配并调整。快速中断请求(FIQ )要求具有最高优先级。如果分配给 FIQ 的请求多于1 个,VIC 将中断请求“相或”后向ARM处理器产生 FIQ 信号。当只有一个中断被分配为 FIQ 时可实现最短的FIQ 等待时间,因为FIQ 服务程序只要简单地启动器件的处理就可以了。但如果分配给FIQ 级的中断多于1 个,FIQ 服务程序从 VIC 中读出一个字来识别产生中断请求的 FIQ中断源是哪一个。 向量IRQ 具有中等优先级。...
关键词: arm7 LPC2103 中断

http://www.eeworld.com.cn/mcu/2019/ic-news011642950.html 发布时间: 2019-01-16



ARM中断向量表的简单分析

一般编写arm的裸机程序的时候,创建中断向量表就把它放在0x00000000~0x0000001c中,一般都放在这个位置上。但是中断向量表也可以放在0xffff0000~0xffff001c中,知道这是怎么设置的么?开始看到的时候真的有点奇怪,因为在学习arm的时候,根本没去看arm中的协处理器CP15中的c1控制寄存器中的v位来控制,我们一般都使用默认的值0,则必须将中断向量表放在0x00000000~0x0000001c中。 在看Linux内核对arm中的中断的初始化的时候,就一直对0xffff0000的地址有点怀疑,果然在网上发现这个地址不是随便写的,当我看到arm的协处理器进...
关键词: ARM 中断向量表

http://www.eeworld.com.cn/mcu/2019/ic-news011642949.html 发布时间: 2019-01-16



stm32的存储器结构

首先,先看一下stm32的存储器结构。Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。FLASH存储下载的程序,FLASH是ROM的一种。SRAM是存储运行程序中的数据,SRAM是RAM的一种。所以,只要你不外扩存储器,写完的程序中的所有东西也就会出现在这两个存储器中。1.     STM32中的堆栈。        首先要说明的是单片机是一种集成电路芯片,集成CPU、RAM、ROM、多种I/O口和中断系统、定时器/计数...
关键词: stm32 存储器结构

http://www.eeworld.com.cn/mcu/2019/ic-news011542901.html 发布时间: 2019-01-15



STM32堆栈大小及位置

STM32的地址空间映射:首先STM32的堆栈是存放在片上静态SRAM中的,地址分配可以见Keil的编译map文件:HEAP  0x200106f8  Section  512  startup_stm32f2xx.o(HEAP) STACK  0x200108f8  Section  1024  startup_stm32f2xx.o(STACK)__heap_base  0x200106f8  Data  0  startup_stm32f2xx.o(HEAP)...
关键词: STM32 堆栈大小 位置

http://www.eeworld.com.cn/mcu/2019/ic-news011542899.html 发布时间: 2019-01-15



FPGA虚拟化技术将成为未来主攻方向

利用FPGA虚拟化突破时空限制 在传统的FPGA开发模型中,使用者通常使用硬件描述语言(HDL)对应用场景进行建模,然后通过特定的FPGA开发工具将硬件模型映射到FPGA上,最终生成可以运行的FPGA映像。 这种开发模式的另外一个主要缺点是,FPGA只能由单一用户开发和使用,而与应用场景、FPGA的产品种类等无关。比如对于一个对资源需求不大、而且不需要连续运行的应用而言,大部分FPGA的硬件资源在大部分时间内都会闲置。很显然,这样很难在时空范围内对FPGA进行充分利用,见下图。 为了提高FPGA的开发效率、更好的利用FPGA的逻辑资源、方便FPGA的大规模部署和应...
关键词: FPGA

http://www.eeworld.com.cn/FPGA/2019/ic-news01143829.html 发布时间: 2019-01-14



【STM32】通用定时器的输入捕获(实例:输入捕获)

通用定时器输入捕获概述输入捕获的工作原理在通用定时器框图中,主要涉及到最顶上的一部分(计数时钟的选择)、中间部分(时基单元)、左下部分(输入捕获)这三个部分。这里主要讲解一下左下部分(输入捕获),其他两个部分可以参考文章:【STM32】通用定时器的基本原理(实例:定时器中断)。输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32的定时器,除了TIM6、TIM7,其他的定时器都有输入捕获的功能。下面以一个简单的脉冲输入为例,简单地讲述一下输入捕获用于测量脉冲宽度的工作原理:先设置输入捕获为上升沿检测,记录发生上升沿时TIMx_CNT的值。然后配置捕获信号为下降沿捕获,当下降沿到来的时候发生捕...

http://www.eeworld.com.cn/mcu/2019/ic-news010442781.html 发布时间: 2019-01-04



stm32死机问题的处理

死机过程基本概念:连接寄存器LR:调动子程序时,自动存储下一次返回的地址,其实就是最近调用的那一次函数的地址。死机的过程:这里我们最需要关注的是第一步入栈:其中8个寄存器的顺序是其中出现异常时LR里面的值是固定的最后更新堆栈指针,我们根据最后使用的堆栈里面的内容,就可以知道出问题时的最后现场。死机定位思路简单来讲就是:找到死机时候的lr寄存器,然后根据lr寄存器的值,找到此时压入的是psp堆栈,还是msp堆栈。然后根据堆栈里的内容(最后压入堆栈的8个寄存器的值)。其中压入到堆栈里面的return address这个值至关重要,这个是上一次,压入堆栈的最后一个函数,由此就可以定位出死机的位置。使...
关键词: stm32 死机问题

http://www.eeworld.com.cn/mcu/2018/ic-news122842732.html 发布时间: 2018-12-28




<上一页 12345678910111213141516 下一页> 相关结果约4,811个