推荐阅读最新更新时间:2024-03-16 15:43
【嵌入式】STM32的库函数使用
使用编译环境为MDK5,烧录器将会使用JTAG和串口两种,芯片为STM32F103C8T6 零、前准备 1.MDK5编译环境 2.JTAG驱动或串口驱动 一、建立工程模板,写一个简单的小程序 1).创建工程目录 这里就会使用MDK创建工程了,由于STM32的工程已经比较大了,所以在工程目录下将会再创建多个目录,以便整理。 (说明一下,其实随便放都可以,只要工程都能包含以下说到的文件即可) 这里工程名就叫template吧(.代表工程目录): .CORE 存放芯片内核驱动文件; .FWLIB 使用库函数的话存放库函数; .OBJ 存放编译生成文件; .SYSTEM 存放系统代码; .USER 存放工程文件,应用程序等。 新建好
[单片机]
STM32开发笔记73: C++中子类调用父类同名函数的处理方法
单片机型号:STM32L053R8T6 1、问题 父类有1方法:Enable_RS485,如下所示: class CUart { public: uint8_t u8_UartNumber; //端口号1-8 uint32_t u32_BaudRate; //波特率 uint8_t u8_Parity; //效验位 CC0 C0; //485控制引脚C0 CC1 C1; //485控制引脚C1 UART_HandleTypeDef hUART; uint8_t u8_UartReceiveBuffer ; public: CUart(uint8_t u8_UartNumber, uint3
[单片机]
STM32单片机对CAN过滤器的设置方法
在使用STM32的CAN控制器进行数据收发,当用到位屏蔽模式的时候,就要设置过滤器了,这个关系到是否能够接收到想要的数据。下面针对几种不同情况对CAN过滤器(Filter)进行设置。 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//标示符屏蔽模式 CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit; 1、对扩展数据帧进行过滤:(只接收扩展数据帧) CAN_FilterInitStructure.CAN_FilterIdHigh=(EXT_ID》》13)&0xFFFF; CAN_F
[单片机]
stm32f10x.h文件分析理解
今天再看过半年前自己写的这篇发现自己当时理解有误,stm32f10x.h与库开发并未存在太大关系,只是一个最为重要的寄存器地址到寄存器结构体变量的映射。 stm32f10x.h 这个头文件是STM32开发最为重要的一个头文件相当于我玩51那会,那个 reg52.h 。但对于STM32来说,它的寄存器数量是非常多的,如果按照操作51一样的方法来操作32的话,查数据手册来配置寄存器是非常麻烦的。所以ST开发了这个库,方便大家开发,缩短开发周期。在 stm32f10x.h 中前面一开始就出现了: #ifndef __STM32F10x_H #define __STM32F10x_H #ifdef __cplusplus exte
[单片机]
STM32 FreeModbus RTU从机移植以及UART配置
FreeModbus的具体介绍就不提了。至于为什么要移植,大概就是因为移植比较快,而且比较稳定,可以减少因为自己编写出现的漏洞。 但是FreeModbus 1.5版本是没有主机的,因此移植的时候只可以做从机。网上有几个关于Modbus主机的源代码,回头等我弄好了再更新。 ================================== 理论上来说,此处我移植了全部,但是只调试了RTU部分,因此其他部分不做赘述。 移植过程: 1.将modbus目录下所有文件拷贝加入工程。 2.对modbus中的include下的mbconfig.h进行编辑,裁剪其中需要的模块。(此处我没有进行裁剪,因此选项都是默认) 3.将
[单片机]
字符转整型STM32史上最短 字符转整形 简简单单
一直奇怪为什么stm32处理数据那么麻烦,要指针数组判断等等跳来跳去的。 直到今天,我发现了 #include “string.h” #include “stdlib.h” !!! 那我就可以两句话搞定我的数据了!!! 而不是像之前那样子那么麻烦了:STM32字符转整型处理 ’ stm32c语言字符转正型,并且进行数据分割 #include string.h #include stdlib.h u8 DATA = X12Y34Y56Y78 ; int shuju_chuli(const char *shuju,char zifu ) { char *shu_ju_1=strchr(shuju,zifu)+1; /
[单片机]
stm32 基于TIM1定时器的PWM输出
void PWM_TIM1(uint16_t arr,uint16_t psc) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //定时器TIM1时钟使能 TIM_DeInit(TIM1); //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Period =arr; //设置用来作为TIMx时钟频率出书的预分频值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置时钟分割 TIM_TimeBaseStru
[单片机]
STM32的ADC的采样周期确定
采样频率的确定 1.首先确定ADC 的时钟,这里需要看你的RCC的设置。在采用固件库的基础上,设定ADC的采样频率相对来说是很容易的。 (1)由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步。CLK 控制器为ADC 时钟提供一个专用的可编程预分频器。 (2) 一般情况下在程序 中将 PCLK2 时钟设为 与系统时钟 相同 RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2); (3)采样时间和转换时间 ADC 使用若干个ADC_CLK 周
[单片机]