
STM32
HAL库
@一二三四五
这个作者很懒,什么都没留下…
展开
-
STM32 硬件SPI读取HT7036程序(HAL库)
由下图HT7036的时序图可以看出,SCK在空闲时是低电平,读数据是从下降沿开始的,则CPOL=0,CPHA=1;HT7036 写数据格式为1个命令加3个数据,手册中表明特殊命令的高位为1.HT7036读数据也是先发一个命令,然后读取三个数据。初始化时先复位,再校表,设置时钟,开启滤波等。先写入地址,再发送3个数据。SPI配置为主从模式,不使能NSS。主函数中先初始化再按地址读数据。原创 2023-12-27 17:08:26 · 1519 阅读 · 0 评论 -
STM32 互补PWM 带死区 HAL
将64写入sBreakDeadTimeConfig.DeadTime即可将死区设置为1us。例如:Timer1主频64MHz,死区时间1us。DT_data:写入到单片机里的值。DT_time:死区时间。原创 2023-07-25 19:33:27 · 3115 阅读 · 0 评论 -
STM32F373 SDADC DMA Timer
触发频率为1KHz,1ms转换一次,一次采集两个数据,6通道与8通道。采集到2000个数据则是转换了1000次,时间为1S。在中断回调函数中将SDADC采集与定时器13关闭,然后给出转换完成标志。while中可由按键去触发,等转换完成后则打印出来。zz 定时器13触发。原创 2023-06-15 21:16:31 · 1193 阅读 · 0 评论 -
STM32F373 SDADC DMA HAL
STM32F373单片机SDADC读取,采用DMA模式原创 2022-11-19 21:31:43 · 2109 阅读 · 0 评论 -
STM32 HAL OLED(0.96模拟IIC)
先配置两个端口为上拉输出 GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOB_CLK_ENABLE(); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10|GPIO_PIN_11, GPIO_PIN_RESET); /*Configure GPIO pins : PB10 PB11 */ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; GPIO_I原创 2022-03-23 18:14:47 · 2800 阅读 · 2 评论 -
STM32 读写Flash (HAL)
此功能每次单片机上电先读取Flash数据,然后将数据写入Flash再串口打印。读出的数据累加再次写入Flash这样每次关机后再上电就会继上一次的数累加,实现断电保存数据功能uint32_t FlashData;uint32_t Flashaddr = 0x08007000;void writeFlashTest(uint32_t writeFlashaddr,uint32_t writeFlashData)//FLASH写入数据{ HAL_FLASH_Unlock();原创 2022-03-31 00:01:05 · 5071 阅读 · 0 评论 -
STM32F103C8T6 PWM(PB15)HAL
APB2为72M 设置计数频率为1M PWM频率为1KHzPB15为互补输出主函数加入 /* USER CODE BEGIN 2 */ MX_TIM1_Init(); HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_3); //互补通道输出开启 /* USER CODE END 2 */生成的代码中将tim.c中的模式成pwm,因为cubemx不支持修改加入以下代码,则PB15接LED可为呼吸灯...原创 2022-03-28 21:14:34 · 2022 阅读 · 0 评论 -
STM32 HAL ADC+DMA
选PA2,PA3,开启扫描模式,连续转换,关闭间断通道选择,不配置则只会转换一个通道。使用软件触发若是不用DMA中断,在NVIC中关闭中断,再在adc中的NVIC里去掉DMA中断选择一个字节必须使用uint32_t /* USER CODE BEGIN 1 */ uint32_t AdcBuf[2]={0};//DMA 选用一个字节,则必须使用uint32_t uint8_t i; /* USER CODE END 1 */在main函数中加入adc校准...原创 2022-03-30 19:35:12 · 2727 阅读 · 5 评论 -
STM32 HAL 外部中断
模式选择下降沿触发,选择端口上拉将中断回调函数加在stm32f1xx_it.c文件中/** * 函数功能: 按键外部中断回调函数 * 输入参数: GPIO_Pin:中断引脚 * 返 回 值: 无 * 说 明: 无 *//* USER CODE BEGIN 1 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ //在此判断是哪个外部中断端口 if (HAL_GPIO_ReadPin(GPIOB,...原创 2022-03-23 16:28:10 · 3735 阅读 · 0 评论 -
STM32 HAL 定时器中断
Clock Source:选用内部时钟APB2时钟clock为72MHz(采用STM32F103C8T6,TIME1为高级定时器时钟为APB2,其它3个为APB1时钟)PSC:分频系数。定时器时钟为APB时钟除以(PSC+1)=72M/(7199+1)=10KHzARR:重载值。设置为9999中断时间=(PSC+1)*(ARR+1)/clock=(7199+1)*(9999+1)/72000000=1s生成代码后在main中开启定时器中断HAL_TIM_Base_Start原创 2022-03-28 19:45:49 · 3164 阅读 · 0 评论 -
STM32 HAL 串口收发(无DMA,中断接收)
STM32CUBE配置一、使用printf发送数据,在usart.c中添加代码串口重定向/* USER CODE BEGIN 0 */#include <stdio.h> #ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)#endifPUTCHAR_PROTOTYPE{原创 2022-03-23 16:41:07 · 2199 阅读 · 0 评论 -
STM32 HAL ADC多通道
stm32F103c8系列的ADC ,本次选用PA2,PA3Scan Conversion Mode( 扫描模式 ) 使用了多个通道ENABLE就是开启扫描模式,否则DISABLEContinuous Conversion Mode(连续转换模式) 连续转换ENABLE,不连续则DISABLE开一次转换一次Discontinuous Conversion Mode(间断模式) 多个通道则需使能ENABLEnumber of Discontinous Conversions间断模.原创 2022-03-30 00:19:52 · 8137 阅读 · 4 评论 -
STM32_HAL基本设置操作
选择芯片,直接输入就行选择下载方式,硬件BOOT0与BOOT1需拉低。选择外部高速时钟时钟倍频不分频配置PB13输入配置PB15输出保存位置配置输出文件点击GENERATE CODE创建工程打开后配置一下keil基本的设置 GPIO_InitStruct.Pin = GPIO_PIN_13; //端口 GPIO_InitStruct.Mode = GPIO_MODE_INPUT; //输入 ...原创 2022-03-21 23:16:42 · 961 阅读 · 0 评论