推荐阅读最新更新时间:2024-11-18 21:27
基于STM32+ucos-II+DS18B20调试成功
前几天调试了一下DS18B20的程序,起初系统在裸奔的时候DS18B20可以很正常的读取数据。由于项目前期设计时添加了ucos实时操作系统。原以为把裸奔的程序移植过来就可以使用。结果悲剧发生了 如果做过这方面的朋友一定知道。添加后,你会发现系统不跑了,彻底的死掉了。原因在何处?经过一整天的查找,发现原来系统的时间片被占用了。导致ucos的ticks出现异常。 解决办法:一种方法是:修改OS_CPU_SysTickInit(void)函数,与delay函数进行兼容。在温度传感器延时的时候不影响操作系统的tick运行。这样就可以解决问题了。 还有一种方法就是,把18B20的延时定时器更换成TIM3或者是其他定时器。和系统的tick分开
[单片机]
STM32的HAL和LL库到底能不能混合使用呢?
STM32的HAL(Hardware Abstraction Layer)和LL(Low Level)库是ST公司为快速开发STM32芯片的软件驱动库。两个库的定位是不同的,HAL库旨在为开发者提供一种快速开发的方法,同时在不同的STM32芯片之间保持一致性,而LL库是一种更低层次的API,提供了尽可能接近底层芯片的操作接口。 但是,使用哪种库来进行开发取决于个人的喜好和实际需求。有的人认为HAL库足够强大,可以满足大多数开发需求,而其他人则更愿意使用LL库,这可能是因为他们更熟悉底层芯片的操作或者需要更高的性能。 在实际开发中,有时需要同时使用HAL库和LL库。比如,当您需要使用HAL库提供的一些高级功能时,而LL库中没有对应的
[单片机]
STM32时钟初始化函数SystemInit()详解
花了一天的时间,总算是了解了SystemInit()函数实现了哪些功能,初学STM32,,现记录如下(有理解错误的地方还请大侠指出): 使用的是3.5的库,用的是STM32F107VC,开发环境RVMDK4.23 我已经定义了STM32F10X_CL,SYSCLK_FREQ_72MHz 函数调用顺序: startup_stm32f10x_cl.s(启动文件) → SystemInit() → SetSysClock () → SetSysClockTo72() 初始化时钟用到的RCC寄存器复位值: RCC_CR = 0x0000 xx83; RCC_CFGR = 0x0000 0000;RCC_CIR = 0x0000 0000;
[单片机]
stm32串口的flag和it标志位
今天用到stm32的串口,对串口进行配置进行接受数据。之后大家也可以想象到结果是什么,完全没有用哎! 后来慢慢的发现了问题的所在,现做笔记如下: ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); USART_IT参数: #define USART_IT_PE ((uint16_t)0x0028) #define USART_IT_TXE ((uint16_t)0x0727) #define USART_IT_TC ((uint16_t)0x0626
[单片机]
STM32的串口中断
总的来说,STM32单片机的串口还是很好理解的,编程也不算复杂。当然我更愿意希望其中断系统和51单片机一样的简单。 对于接收终端,就是RXNE了,这只在接收完成后才产生,在执行USART_ITConfig(USART1, USART_IT_RXNE, ENABLE)代码时不会进入ISR。但麻烦的就是发送有关的中断了:TXE或者TC,根据资料和测试的结果,TXE在复位后就是置1的,即在执行USART_ITConfig(USART1, USART_IT_TXE, ENABLE)后会立即产生中断请求。因此这造成一个麻烦的问题:如果没有真正的发送数据,TXE中断都会发生,而且没有休止,这将占用很大部分的CPU时间,甚至影响其他程
[单片机]
STM32开发 -- 时钟系统详解
上一篇文章讲了RTC,里面其实已经包含了时钟系统的介绍了。这篇文章将再详细的讲一下。 一、时钟系统框图 二、时钟系统 STM32 有5个时钟源:HSI、HSE、LSI、LSE、PLL。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。 ⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过7
[单片机]
基于STM32的PCL6045B开发体会
上两个月做了个关于尿残渣的新项目,用到了电机驱动芯片PCL6045BL。这个系统方案有一个20余年工作经验的老工程师提出来,主要采用的是STM32操作PCL6045,进而控制多轴电机运动。 于是公司从每个不同项目组抽选人员组成了一个团队。本人负责软件部分,负责编写驱动程序和调试电路板。 全新项目,有一定挑战性。经过分析,决定采用STM32总线方式(FSMC)驱动PCL6045B。对比FSMC的四种总线操作时序和PCL6045B操作时序。认为应该选用STM32的PCCARD模式操作。从数据库中查找了一些文献资料,就开干起来了。 两名硬件工程师按我的需求设计好硬件电路板。 接下来分成以下几个步骤进行: 首先就是建立通讯。让ARM能跟P
[单片机]
采用STM32 单片机的太阳能LED街灯解决方案
随着化石类能源的日益减少,以及温室气体的过度排放导致全球变暖问题越来越受到重视,人们一方面在积极开发各类可再生新能源,另一方面也在倡导节能减排的绿色环保技术。太阳能作为取之不尽、用之不竭的清洁能源,成为众多可再生能源的重要代表;而在照明领域,寿命长、节能、安全、绿色环保、色彩丰富、微型化的LED固态照明也已被公认为世界一种节能环保的重要途径。太阳能-LED街灯同时整合了这两者的优势,利用清洁能源以及高效率的LED实现绿色照明。 本文介绍的太阳能-LED街灯方案,能自动检测环境光以控制路灯的工作状态,最大功率点追踪(MPPT)保证最大太阳能电池板效率,恒电流控制LED,并带有蓄电池状态输出以及用户可设定LED工作时间等功
[电源管理]