推荐阅读最新更新时间:2024-11-03 19:48
STM8做IAP(Bootloader)时在RAM中执行Flash块擦写函数问题
1、STM8的外设库驱动提供了很多代码,要求不高的话直接用库驱动即可 2、Flash块擦写速度快,但是必须要把函数放到RAM中执行(因为MCU的是NorFlash,普通的函数都是直接在Flash上执行的) 官方库如下 /** * @brief Erases a block in the program or data memory. * @note This function should be executed from RAM. * @param FLASH_MemType : The type of memory to erase * @param BlockNum : Indicates the bl
[单片机]
构建ARM Linux交叉编译工具链
读者可能会有疑问,为什么要用交叉编译器?交叉编译通俗地讲就是在一种平台上编译出能运行在体系结构不同的另一种平台上的程序,比如在PC平台(X86 CPU)上编译出能运行在以ARM为内核的CPU平台上的程序,编译得到的程序在X86 CPU平台上是不能运行的,必须放到ARM CPU平台上才能运行,虽然两个平台用的都是Linux系统。这种方法在异平台移植和嵌入式开发时非常有用。相对与交叉编译,平常做的编译叫本地编译,也就是在当前平台编译,编译得到的程序也是在本地执行。用来编译这种跨平台程序的编译器就叫交叉编译器,相对来说,用来做本地编译的工具就叫本地编译器。所以要生成在目标机上运行的程序,必须要用交叉编译工具链来完成。在裁减和定制Linux
[单片机]
STM8的ADC的五种工作模式
STM8的ADC的五种工作模式 STM8的ADC是10位的逐次比较型模拟数字转换器,多达16个多功能的输入通道。拥有5种转换模式,转换结束可产生中断。 STM8 ADC的初始化顺序如下: 1、AD输入通道对应的IO设置为上拉输入; 2、配置AD参数,如:预分频系数、是否使用外部触发转换、是否使用施密特触发器、是否使用缓存以及是否使用扫描模式等; 3、开启ADC; 4、开启转换; 注意!开启ADC和开启转换实际上都是置位ADON。 然后就可以通过ADC_DR寄存器读取转换后的值。 l 单次模式: 在单次转换模式中,ADC仅在由ADC_CSR寄存器的CH 选定的通道上完成一次转换。该模式是在当
[单片机]
S3C2440移植uboot之编译烧写uboot
文章目录 移植环境 获取uboot 更新交叉编译工具 配置环境变量 移植环境 主 机:VMWare–ubuntu16.04 开发板:S3C2440 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2012.04.01.tar.bz2 获取uboot 进入https://www.denx.de/wiki/U-Boot下载uboot 一直往下拉选择如下 将下载好的压缩包解压到任意文件夹,并创建source insight工程。将下载好的u-boot-2012.04.01.tar_2.bz2放到ubuntu服务器/work/system中。执行以下命令解压uboot: cd
[单片机]
STM8L052 进入死循环__iar_unhandled_exception
进入这个死循环其实是你的程序中配置好了某个中断,当条件满足时,中断发生了,但你的程序中并没有这个中断的服务函数。 __iar_unhandled_exception: 0084DA 9D NOP 0084DB 20FD JRA __iar_unhandled_exception 解决方法: 1.在程序中找到是哪个中断被配置了,如果这个中断不需要直接关掉它的中断使能。 2.若果这个中断是你需要的就正确的实现它对应中断服务函数,我就是没有正确实现对应的中断服务函数导致进入这个死循环。 3.直接关闭总中断disableInterrupts(),这个也能临时解决这个问题,但是会影响其中断的使用。
[单片机]
STM8的中断系统以及外部中断详解
STM8具有最多32的中断系统,在中断的处理上类似于cortexm系列的芯片,首先是每个中断的向量都是固化在系统内部的,用户需要向相应的中断向量flash位置写入中断处理函数,其二,每个中断向量都具有可编程的优先级,共有两位优先级,两个BIT的优先级可以催化出4个优先级,具体如下 中断控制器内部有一些寄存器专门用来存放相应的中断的中断优先级,同同时,在系统内部也有一个系统寄存器CC他的第三位和第五位分别表示当前正在处理的中断的优先级 可以这样认为,中断发生的时候,系统寄存器在执行中断向量跳转的时候自动载入了相应的中断优先级到系统寄存器CC中. 中断的处理遵循先判断软件优先级后判断硬件优先级的模式,当几个中断同时发生
[单片机]
记录一下自己在mini2440上面 使用uboot的曲折的经历
记录一下自己在mini2440上面 使用uboot的曲折的经历。 首先是使用了买板子时自带的代码: u-boot-1.1.6。但是编译时,总是提示有错误。也不知道这个版本是不是tekk的那个版本,自己修改了一些地方,但是感觉uboot的编译体系与一般的开源软件不相同,编译时,总是提示 有函数的实现找不到,即undefined reference to _,,,,网上说需要在makefile中添加 nostdlib等选项,但依然无法编译通过。 后来下载了 tekk的版本,貌似大家用的都是他的版本。 先说一下supervivi和uboot的区别。 在mini2440在norflash中烧写的是supervivi,super
[单片机]