推荐阅读最新更新时间:2024-03-16 16:23
如何利用stm32的高级定时器产生PWM
用stm32的高级定时器TIM1和TIM8产生PWM,需要注意: 1.都有TIM1,但只有flash容量大于256K的大容量单片机才有TIM8 2.高级定时器相对于通用定时器,多了TIM_CtrlPWMOutputs(TIM8, ENABLE); TIM1产生四路PWM程序: staticvoidTIM1_GPIO_Config(void) { GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
[单片机]
怎样在Linux上开发STM32程序
步骤1:下载所需的一切 您需要下载三个部分才能正常工作: 用于ARM的GCC编译器 STM32固件文件 St-link实用程序 Sample Project 编译器是将我们的C代码和所有其他库文件编译成stm32控制器可以理解的机器语言的主要软件。下载此编译器的最新预编译版本。 包含STM32固件的文件夹是保存主处理器运行所需的所有启动文件和核心文件的文件夹。我们将使用HAL已超越的标准外围设备库。我更喜欢StPeriphLibrary,因为使用该处理器的公司都在使用它们,因为它功能强大,更老旧并且受支持。它也更坚固。它不会减少初始化外围设备或打开LED所需的工作,但是会迫使您学习这些处理器的工作方式。这样一来,您将对内部工作
[单片机]
STM32串口之空闲中断
背景 在做Nbiot的一个路灯项目,NBiot模块一般都是串口接口,使用AT指令集,对接中国移动onenet平台。先用串口助手去测试,流程测试OK之后需要在MCU上重新写一遍。一开始用的STC15系列的MCU,然后跟平台之间对接协议很多,代码量较大,所以换到了STM32F1系列的MCU。 在STC15MCU上面通过串口接收数据只能老老实实用接收中断来做,每接收一帧数据都需要判断帧头帧尾,一帧结束再处理。之前就听说过STM32串口上面有帧中断,一直没有用过,然后才有了这篇博客。 备注:一帧数据是表示一个或多个字节组成的有含义的字符串。 STM32串口 IDLE中断 IDLE其实是 空闲的意思。IDLE中断叫空闲中断
[单片机]
STM32使用SWD连接报错总结
使用SWD通过J-Flash烧写STM32时,会出现各式各样的错误; 总结下原因: 1、复位脚被拉低了,这次我遇到的就是复位引脚的电容焊反了(钽电容),可以正常连接,但是烧写程序时会出现如下报错 – - Erasing affected sectors … - ERROR: RAM check failed @ address 0x20000000. - ERROR: Write: 0x03020100 07060504 - ERROR: Read: 0x00000000 00000000 - ERROR: (0 bytes of RAM have been checked successfully) - ERROR: Fail
[单片机]
STM3216位IO口操作的一些教训
最近在用TFT屏的时候走啦不少弯路,因为TFT屏都是16位的,所以大部分的都是采用一组IO口对应16个数据位刚好并口传输数据,最近因为IO口紧缺,所以想要改成串口,但是发现串口刷新屏幕太慢所以最后改成8位的并口,但是STM32操作IO口的寄存器是16位的。也就是说用并口的话一起传输数据进去虽然只用8位但是操作还是16位一起操作,虽然有8位没用到但是还是在传输数据进去的时候被一起操作,会把不用的8位的值一起覆盖。 #define DATAOUT(x) GPIOB- ODR=x; //数据输出 如上当调用宏的时候整个B端口一起被操作。 方法1: ODR配置法,可以直接使用 GPIO- ODR = value N;给对应的IO口
[单片机]
关于STM32 DAC使用
关于DAC的使用相对很简单,这里只注意两点: 1.从了解寄存器原理来说知道DAC 输出是受 DORx 寄存器直接控制的,但是我们不能直接往 DORx 寄存器(可读)写入数据,而是通过 DHRx 间接的传给 DORx 寄存器,实现对 DAC 输出的控制 。 2.关于STM32的DAC通道输出缓存控制位: 手册并没有解释这个输出缓存实现原理,这里我们一般不需要缓存即可。32的这个输出缓存使能虽然使输出能力强,但却会导致输出实际电压无法到0V,这是一个严重的硬件bug
[单片机]
stm32 rtc 晶振问题解决
这几天在鼓捣stm32的rtc,先焊了一个板子(从stm家园, www.stmsky.com 弄了几块stmsky001pcb板),试了一下rtc显示时间的程序,ok,兴奋呀! 第二天便有网友在移植rtt系统说板子上的rtc不能起振,感觉很奇怪,一样的板子怎么可能会出现这种情况,赶忙我又试了一下我的板子,奇怪的是,昨天还好好的,今天也是不行了。不能起振了。找原因吧。 于是没有多想,肯定是硬件的原因,因为程序昨天跑的好好的。无外乎 晶振和电容,电容我用的10pf,晶振6p的。什么原因呢? 网友dami也和我一样的板子 他的一直ok 所以问了一下,人家晶振随便从别的板子上搞得就ok,我的就是不行,换了20pf 30pf 电容均不行
[单片机]
stm32 hal库分析之uart
hal库 uart 基本概念: 同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 同步是阻塞模式,异步是非阻塞模式。 UART是异步全双工。 实际看代码是会发现,UART的收发寄存器是同一个名字DR,这样看UART似乎是半双工的,但实际上收发是使用不同的寄存器,但是我们使用的是同一个名字。所以它是异步全双工的。 UART是如何初始化的 515 typedef struct
[单片机]