STM32代码
Wang_yf_
这个作者很懒,什么都没留下…
展开
-
通过lwip2.0.2 PPP协议与GPRS模块实现网络通讯
一、基本概念1、网络协议GPRS无线数据传输的最低层,即物理层是通过RS232串口及GPRS模块组成的,然后是数据链路层。其中涉及到PPP协议实现过程。数据链路层上面是网络层,其后是传输层,TCP/IP其中IP协议属于网络层协议,而UDP、TCP都属于传输层协议传输层上方的是包括会话层、表示层、应用层等。针对LWIP来看,硬件结构可以分为网卡或者串口两种物理层架构,如果用到网卡将使用原创 2017-08-03 10:53:53 · 11370 阅读 · 5 评论 -
LWIP-MQTT:CONNECTION_REFUSED_NOT_AUTHORIZED
MQTT连接失败,报错:CONNECTION_REFUSED_NOT_AUTHORIZED;用户名和密码没有通过验证,新版本mqttconnect()中没有用户名和密码的代码,添加后就可以正常连接了。原创 2018-02-06 17:30:15 · 5792 阅读 · 0 评论 -
STM32 多个定时器PWM波输出频率不同。
问题:STM32F4芯片,TIM1,TIM2,TIM3,TIM4输出PWM波,相同设置参数下TIM1频率是其他定时器两倍。原因:因为TIM1和TIM8的内部时钟源总线与其他定时器不同,APB1与APB2的最高频率不同,正好相差一倍。原创 2018-02-06 17:33:32 · 3993 阅读 · 1 评论 -
动态更改PWM波频率并输出一定数量PWM脉冲
一,动态更改PWM波频率:1,定时器时钟使能(主,从)2,正常配置产生PWM波。3,使能事件更新。TIM->CR1的UDIS=04,使能影子寄存器TIM->CR1的ARPE=1这样就可以直接更改TIM->ARR和CCR的值,当定时器溢出后,PWM波形变化后寄存器更新,波形更新,避免直接更改后产生错误。二,产生一定数量PWM脉冲:主要思路是使用STM32自带的定时器同步功能中以一个...原创 2018-03-13 18:08:34 · 7520 阅读 · 2 评论 -
使用DMA时卡在configASSERT( pxQueue );
FreeRTOS系统中使用ADC-DMA模式,在DMA中断中发送信号量,结果程序进入一次中断后不再进入中断。 检查ADC及DMA寄存器:在KEIL中把ADC1->CR等寄存器添加到watch窗口,注意添加DMA寄存器时,基地址稍稍有些不同,LISR的基地址是DMA->LISR,DMA_SxCR等寄存器的基地址为DMA2_Stream0->CR,...原创 2018-03-26 18:54:02 · 4660 阅读 · 3 评论 -
定时器PWM波输出频率问题
平台:STM32功能:多个定时器输出多路PWM波。现象:相同ARR及CCR,输出PWM波频率不同。详细:这类问题通常涉及到定时器时钟源的问题,STM32F4的TIM1与其他定时器不同,不在同一条总线上,所以要注意总线频率的问题。1,例如如果定时器1的输出频率是其他定时器的两倍,那么主要检查设置分频的时候,TIM1的分频要是否其他定时器的两倍。2,例如如果定时器1的输出频率与其他定时器有差距,但是差...原创 2018-05-02 14:25:46 · 2629 阅读 · 0 评论 -
STM32L476比较器上升沿中断
用STM32L476完成检测外部电压,检测到电压高于1.2V,上升沿进入中断。用STM32自带例程发现下降沿也进入中断,仿真调试检查寄存器,配置正常。更改速度/功率位高,迟滞为大,下降沿不进入中断。...原创 2018-08-29 16:21:41 · 2843 阅读 · 0 评论 -
STM32学习之Flash(主存储块、系统存储器和选项字节)详解
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。FLASH分类根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存储块用于存储程...转载 2019-07-15 15:37:54 · 2277 阅读 · 0 评论 -
低功耗项目小小心得
前两个月在公司做了一个低功耗项目,现在功耗最低10uA不到,平均功耗40uA左右,算是达标了。因为是公司产品,就不方便贴代码、原理图了,该产品是一个小模块,可以方便的嵌入到各种系统里面。跟原子哥他们卖的NRF2401类似,是一个读卡器。 做这个项目中间也请了技术支持,因为外围电路芯片的功耗一直降不下来,经过与对方的反复交流,对方提供了低功耗的测试结果、硬件方案、软件方案,经过修改测试,转载 2017-08-11 10:44:17 · 1683 阅读 · 0 评论 -
keil MDK hardfault调试步骤
hardfaultCortex-M3/4的Fault简介 (http://blog.csdn.net/wang_yf_/article/details/53436041%20fault%E8%AF%A6%E8%A7%A3)、方法1:调试步骤1,添加断点在进入hardfault后进入断点。/** * @brief This function h...原创 2017-07-12 08:59:57 · 11728 阅读 · 2 评论 -
stm32中字节对齐问题(__align(n),__packed用法)
ARM下的对齐处理 from DUI0067D_ADS1_2_CompLib 3.13 type qulifiers 有部分摘自ARM编译器文档对齐部分 对齐的使用: 1.__align(num) 这个用于修改最高级别对象的字节边界。在汇编中使用LDRD或者STRD时 就要用到此命令__align(8)进行修饰限制,来保证数据对象是相应对齐。 这个修饰对象的命令最转载 2017-06-20 16:58:46 · 7561 阅读 · 0 评论 -
ADC的模拟看门狗
ADC的模拟看门狗用于检查电压是否越界。他又上下两个边界,可分别在寄存器ADC_HTR和ADC_LTR中设置。库函数是使用ADC_AnalogWatchdogThresholdsConfig设置的,无论是常规通道还是注入通道,都非常简单。 当模拟看门狗检测到电压高于上限或者低于下限时将会产生看门狗中断。捕获这个中断,可以做出一些应对措施。 数据手册上特别之处的一个东西:模拟看门狗说使用的比较数据原创 2016-10-10 10:50:41 · 8376 阅读 · 3 评论 -
485串口代码
原代码: u8 CA_test[10]={0x90,0xeb,0x01,0x01,0x02,0x00,0x55,0xaa,0x00,0x00}; u16 i=0; for(i=0;i<10;i++) { CAMERA_RCV_OFF;//发送模式 while( (USART_GetFlagStatu原创 2016-10-25 16:15:47 · 2232 阅读 · 0 评论 -
STM32 PWM移植排故
1,现象硬件更新后,PWM波没有输出。2,思路1,GPIO设置通用推挽输出用定时器产生方波,用示波器观察是否正常产生方波。如果正常,硬件无问题,GPIO无问题。 2,定时器设置计数中断,在中断处理函数设置断点,观察能否进入断点,如果能,则定时器模块无问题。芯片有相应定时器。 3,检查配置流程。3,原因1,GPIO设置1)管脚分配注意是否有remap,需要remap的是否设置,; 2)GPIO设原创 2016-10-31 10:57:19 · 686 阅读 · 0 评论 -
STM32 PWM
一,初始化(PWM1模式,基本功能)1,基本功能:1)模块时钟初始化:/*TIM ENABLE*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 |RCC_APB1Periph_TIM3 |RCC_APB1Periph_TIM4|RCC_APB1Periph_TIM5 | RCC_APB1Periph_TIM6 | RCC_APB1Periph_TIM7, E原创 2016-10-31 10:37:12 · 643 阅读 · 0 评论 -
stm32 ADC基础配置
一,基础知识1,通道组ADC有两组通道:STM32 将 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。规则通道相当于你正常运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。 ● 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQR原创 2016-10-31 18:52:58 · 10159 阅读 · 0 评论 -
函数OSMemCreate()理解,二级指针,二维数组,强制转换
建立一个内存分区的步骤是先建立一个二维数组,二维数组的第一维是块数,第二维是块的大小,二维数组把一块连续的内存占了(虽然占了,但是并不能有详细的管理),然后把这个二维数组的地址给OSMemCreate()函数,进行一系列设置,方便系统对这块连续的内存进行管理。函数作用:把二维数组与内存控制块联系起来,行程内存分区;原创 2016-11-16 17:36:56 · 2495 阅读 · 1 评论 -
UCOSII_进入临界段方式:OS_CRITICAL_METHOD
进入临界段方式:OS_CRITICAL_METHOD==?//OS_CRITICAL_METHOD = 1 :直接用处理器开关中断指令开关中断,这种没有现场保护的方式造成无法进行临界区嵌套,如果有两层临界区,那么里层退出保护时候直接开了中断,而外层的临界区还没有结束。(关几次中断都是关中断,开一次中断就全开了)//OS_CRITICAL_METHOD = 2 :这种方式先把中断状态压入堆栈保存起来原创 2016-11-17 16:19:13 · 1715 阅读 · 0 评论 -
cortex-m3 各种引发fault的统计
引发各种fault的各种情况统计,不断更新原创 2016-12-02 16:23:41 · 647 阅读 · 0 评论 -
STM32开发资料汇总
PDF等资料下载网站有很多,不过国内这个最方便https://www.stmcu.org.cn/其中http://www.stmcu.org.cn/module/forum/thread-616444-1-1.html中文文档更新帖子,最新中文文档可在这里找到程序下载工具(Bin代码下载及调试)做IAP的时候用到的https://www.stmcu.org.cn/docum...转载 2019-07-12 16:37:11 · 700 阅读 · 0 评论