
STM32编程
快乐的老鼠
如果您觉得我的文章帮助了您,那就随手点个赞吧 :)
展开
-
使用ST Flash Download也无法擦除读保护的问题修复
不知道为啥ST官方我下载器也经常失灵.我已经确保Boot0=1, Boot1=0, 可依然提示如下:No response from the target, the Boot loader can not be started.试了很多种方法就是不能下载, 不知道之前几次是怎么成功的.下面就尝试使用STlink来下载值需接4根线: VCC、GND、SWDIO和SWCLK。Boot0=0,Boot1=x1. 点Target->connect2...原创 2021-08-20 16:16:51 · 1401 阅读 · 0 评论 -
STM32F4 使用 JFlash 加密后无法再擦除了
一直好奇secure功能, 就点了下, 发现挺好的, 以后别人也不能读我的程序了.原创 2021-06-17 17:45:36 · 2075 阅读 · 2 评论 -
KeilMDK 开发过程中遇到一些奇怪问题记录
1. Keil 局部变量不能查看值,显示为not in scope, 按理论是应该显示的, 这种情况下八成是优化等级被打开, 改回O0即可.2. Keil 编译的时候遇到很多错误, 可是那个文件不可能错误, 这种情况很可能是自定义的头文件的最后一个函数分号忘记敲了;3....原创 2021-01-17 16:27:22 · 1692 阅读 · 0 评论 -
STM32 Boot0引脚没有拉低导致程序无法运行或者仿真
仿真的时候发现pc指针是0x1fxxxxxx 位置,想都不用想肯定是boot0没有拉低导致的,这种情况一般会发生在新手身上!原创 2019-09-28 17:21:47 · 2151 阅读 · 0 评论 -
STM32F系列GPIO重映射IO一览表
原创 2019-03-15 16:08:17 · 4304 阅读 · 0 评论 -
STM32 定时器周期动态修改
最近手头项目上有个需要模拟串口的地方,而模拟串口部分有这样的一个需求:当Strat信号来的时候启动定时器TIM3,到52us后采样Start信号是否是低电平,然后希望将定时器的周期改成104us,采样剩余的9个bit。解决思路:① 外部中断触发时候启动TIM3(同时关闭外部中断使能),等52us后在TIM3中断里判断Rx的状态;② 如果是低电平就改变定时器TIM3的周期为104us;...原创 2019-01-10 10:15:09 · 8350 阅读 · 0 评论 -
STM32L系列低功耗调试《实用篇》
不知道大家有没有和我一样的经历,看官方数据手册,什么休眠2uA, 停机多少nA,这么换成自己调试的时候就是上百uA了,差的不是一个数量级,有木有这样的感受~ 最近在做一个NB项目,用到了如下外设: 外部唤醒引脚,串口,SPI,DMA,ADC,RTC,模拟IIC等外设,可以说是一个综合型项目了吧,最后调试下来整机<10uA 待机功耗(实测...原创 2018-07-06 14:36:06 · 14260 阅读 · 4 评论 -
STM32L系列flash操作陷阱
今天调试代码的时候发现程序出现HardFault了, 看了下堆栈,发现是执行FLASH_ProgramWord()函数的时候出现了异常,起初的时候以为是这块存储区域是坏的,因为其他变量是可以保持的,当保存到这个变量时候就出异常,坏了块板子还是这样,这下我意识到我的程序里至少有很个很大的bug,试了多种方法,包括将存储扇区跟正常的对调也没发现什么不对劲的,最后无意间发现要存储的变量地原创 2017-12-18 21:55:17 · 6334 阅读 · 0 评论 -
我的笔记
1. 字节反转u8 resvByte(u8 byte){ u8 ret=0; int i; for(i=0;i<8;i++) { ret<<=1; if(byte&mask[i]) ret++; } return ret;}1.1 Hex与BCD相互转换u8 Bcd2Hex(u8 bcd_dat...原创 2017-11-10 20:10:41 · 415 阅读 · 0 评论 -
如何解决"last line of file ends without a newline"
在用keil编译stm32时候经常遇到这个头疼问题,就是明明加了新的一行可还是有这样的警告,看着不舒服.就像下图所示.出现这个问题问题怎么解决呢?其实很简单你的最后一行除了回车符肯定有其他的符号,只要把它删除掉再编译就OK了.我一般是把光标定位到最后一行的最后一个字符例如#endif的f位置处,然后一直按住DEL键,等感觉删的差不多了就敲了换行键原创 2014-12-20 19:05:16 · 3427 阅读 · 0 评论 -
STM32位操作
今天看到同事用STM里位操作时候觉得挺像51的,额,挺怀念51编写程序的风格了,今天跟大家分享下stm32位操作的实现方法.#ifndef __LED_H#define __LED_H#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))#define ME原创 2015-01-09 14:24:28 · 1063 阅读 · 0 评论 -
STM32F746 利用HAL库编写串口驱动程序
之前用hal库的时候都是用一些简单的,例如初始化一个IO用作LED指示,今天写的代码需要串口的例子,说真的看了官方的demo也没看出啥名堂,反而觉得用hal写串口驱动太麻烦了.回顾下之前常见的串口写法,发送用的是阻塞式发送,一般都是发送一些调试信息,接收肯定用的是中断;为了编程的方便,发送一般是跟printf绑定的,但是对于hal库这些我们又怎么来编写呢?接下来我把我刚刚学习到的东西分原创 2017-03-04 22:51:32 · 7168 阅读 · 0 评论 -
STM32L151 PWM输出示例
最近做个项目,需要用PWM控制4线风扇的速度,调试完后顺便将其记录下来.typedef struct { u16 pwm_change_flag; u16 pwm_value;}Pwm_Fan_t;Pwm_Fan_t Pwm_Fan;void Pwm_Param_Init(void){ Pwm_Fan.pwm_change_flag=0; Pwm_Fan.pwm_valu原创 2017-08-14 16:48:33 · 4843 阅读 · 0 评论 -
解决STM32不能模拟仿真的问题
这段时间在学习RT-Thread,发现每次编译再烧写到开发板里太浪费时间了,都是一仿真就变成单步模式了.怎么解决这个问题呢,我在网上搜索了一个方法,经过实测改方法确实可行.具体解决方法:在Debug选项卡将Simulation中的Dialog.dll设置为DARMSTM.DLL再将Parameter设置为你的单片机型号,例如我的是-pSTM32F103VE原创 2016-12-07 10:09:48 · 8120 阅读 · 0 评论