1.就像参数定义时使用下面语句
const unsigned char Flash_user_data[16] __attribute__((at(0X08080000))) =
{
0x01,0x02,0x03,0x04,
0x01,0x01,0x03,0x03,
0x04,0x04,0x04,0x04,
0x05,0x05,0x01,0x04
};
2.写入以后读取
int flash_addr; //存取地址的时候使用
unsigned char flash_data_char; //字节形式读取一个字节
unsigned int flash_data_int; //int形式读取一个字节
应用:
flash_addr =0X08080000;
flash_data_char = *(unsigned char *)flash_addr;
flash_data_int = *(unsigned int *)flash_addr;
关键字:STM32 下载程序 flash 固定位置 写数据配置
引用地址:
STM32 下载程序时,往flash固定位置写数据配置
推荐阅读最新更新时间:2024-11-12 09:37
STM32控制步进电机实现精确转动
驱动方式为A-AB-B-BC-C-CD-D-DA-A 使用延时函数实现 主函数 #include dj.h #include delay.h #include sys.h #include key_led.h //ALIENTEK miniSTM32¿ª·¢°åʵÑé1 //ÅÜÂíµÆʵÑé //¼¼ÊõÖ§³Ö£ºwww.openedv.com //¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ int main() { int i=512; //ÕâÀïתһȦÐèÒª4096¸öÂö³åÐźŠתһȦ
[单片机]
STM32系列第10篇--看门狗
看门狗的作用: 在启动正常运行的时候,系统不能复位。 在系统跑飞(程序异常执行)的情况,系统复位,程序重新执行 STM32有两个看门狗: 独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它仍有效。独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。 窗口看门狗由从APB1时钟分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。 窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。 看门狗一般用法: while(1) { 喂狗; if(定时标识) { 里面就是按键程序; } }12345678 计算一下,主循环执
[单片机]
STM32中关于高电平有效,低电平有效的一点理解
在学习STM32中的过程中,经常会遇到“高电平有效”,“低电平有效”等字眼,初看时很多时候就会从字面上理解,认为高电平有效的意思就是有效电平是高电平,低电平有效的意思就是有效电平是低电平的意思。而实际上,这样的理解是有误的。下面咱们以STM32的定时器中输出比较通道为例: 这幅图实际上就是一个pwm波产生的过程,对定时器不了解的可以去查阅相关手册,现在我们先看图中标号1的输出模式控制器,这里模式是指pwm模式,他的意思就是可以通过配置寄存器TIMx_CCMR1的OC1M两位,来选择pwm的模式,但是关于模式选择,手册中有这样一句话:在向下计数时,一旦TIMx_CNT TIMx_CCR1时通道1为无效电平(OC1REF=0
[单片机]
STM32开发板的TIM3开启和关闭
关闭定时器中断要考虑好多情况 1)关闭定时器时,定时器是否在处在工作状态 2)关闭定时器时,定时器是否正好进入中断,造成关闭程序出现断层,进而无法实现完整关闭程序,此时可以使用高一级别的外部中断强制进入外部中断服务函数进行关闭程序 3)关闭定时器时,关闭定时器的程序是否在定时器服务函数里面?还是在总函数里面?还是在外部中断服务函数里面?是需要考量的? 4)关闭定时器时,定时器的中断触发时间是否太紧凑?定时器的中断总次数是否太小?都会影响关闭定时器程序运行的连续性。 以下为关闭程序: 首先打开时钟,然后才能进行关闭操作。 RCC- APB1ENR|=1 1; //TIM3时钟使能 TIM3- ARR=arr; //设定计数器自
[单片机]
STM32定时器原理与使用
1.定义 设置等待时间,到达等待时间之后执行指定的硬件操作。 定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,也可以产生PWM方波等,定时器产生PWM控制电机状态是工业控制的普通。 ----------------------------------------------------------------------------------------------------------------------------------------------------------- 2、STM32F4xx系列的芯片:2个高级控制定时器(TIM1和TIM8)、10个通用定时器(10TIM2
[单片机]
STM32经验总结(1)
1、STM32启动模式设置接口 如果我们想用串口下载代码,则必须配置BOOT0为1,BOOT1为0,而如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。 2、使用库函数还是位带操作 使用库函数操作 #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) 位带操作(基本上只用来进行IO口的输入和输出) #define KEY0 PEin(2) 用库函数的好处是,在各个STM32芯片上面的移植性非常好,不需要修改任何代码。用位带操作的好处是简洁。 3、如何调用模版文件Template 首先,清空OBJ输出文件夹,然后直
[单片机]
STM32驱动5线4相步进电机部分代码(STM32F103RC+步进电机28BYJ-48)
其实用STM32驱动步进电机和51单片机驱动步进电机是一样的,只是简单的改变一下输出的引脚而已。 对于步进电机的原理我也不是很明白,我就简单的说一下步进电机简单的分为单极性步进电机和双极性步进电机。 单极性步进电机驱动方式: 单四拍: A-B-C-D; 双四拍:AB-BC-CD-DA; 单双八拍:A-AB-B-BC-C-CD-D-DA 对于单双八拍的方式:每次转动角度为3.75°,对于双四拍每次转动的角度为7.5° 双极性步进电机驱动方式: 单四拍:A/-B-A-B/ 双四拍:A/B-AB-AB/-A/B/ 单双八拍:A/-A/B-B-AB-A-AB/-B/-A/B/ 我使用的单极性步进电机,驱动方式为单双八拍,驱动芯片是ULN2
[单片机]
STM32串口操作相关事项
放了一段时间,对stm32似乎有点陌生,总结一下! (基于3.0固件库,芯片stm32f103rbt6) 1、配置串口的管脚和时钟 由于串口1、2是在GPIOA上: 所以要是能串口GPIOA、AFIO和1或者2的串口时钟,代码如下: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1 , ENABLE); 2、对串口的具体物理管脚进行相应的配置: /* A9 USART1_Tx */ GPIO_InitStructure.GPIO_Pin = GPIO_Pi
[单片机]