STM32
文章平均质量分 56
写得很烂,设为私密不好查看,又不想让人看到,所以设为付费
入门->放弃
这个作者很懒,什么都没留下…
展开
-
裸机程序--时间片调度
a. 网上其实有很多成熟的时间片调度例程, 包括我最开始参加工作也是抄的网上的例程(还记得当时领导问我看明白了它的调度原理吗, 作为一个自学刚参加工作的我来说, 看懂别人的意思真的很难, 当时只能含糊其词的说看得差不多)b. 在我看来网上的例程是有一些问题的, 计算时间的那个函数放到定时器中递减, 随着任务的增加, 定时器定时越不准确, 违背了中断的快进快出, 不过话说回来时间片本来就是一个不准确的定时.c. 违背了软件的开闭原则, 每次添加任务都需要进去修改那个定义任务调度的数组.原创 2024-03-02 22:01:06 · 634 阅读 · 4 评论 -
基本定时器
1. 基本定时器 TIM6 和 TIM7 包含一个 16 位自动重载计数器2. 可以专门用于驱动数模转换器 (DAC), 用于触发 DAC 的同步电路3. 16 位自动重载计数器4. 16 位可编程预分频器5. 计数器溢出时, 会触发中断/DMA请求。原创 2023-08-21 22:58:39 · 791 阅读 · 0 评论 -
窗口看门狗
实际就是设置WWDG_CR的低七位值, 但是这个值要大于0x40(也就是bit T6必须为1, 如果小于的话, 直接就复位, 因此窗口的上限值的取值范围: 0x40~ 0x7F)实际他就是一个倒计数定时器, 当我们设置的初始值减到0x3F的时候,会产生复位, 如果我们开启了复位前中断,那么会先运行中断, 然后复位.我们可以在复位中断保存一些数据,.RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);看门狗使能的话, 则WWDG_CR的位WDGA置1。原创 2023-08-20 18:37:59 · 593 阅读 · 0 评论 -
stm32,STC89C51使用串口下载程序
串口下载程序原创 2022-09-20 15:57:15 · 1690 阅读 · 0 评论 -
STM32DAC
1. 简介12位数字输入,电压输出型的DACDAC可以配置为8位或12位的模式也可以和DMA配合使用12位模式可以配置为数据左对齐或右对齐DAC有两个通道,每个通道独有单独的转换器,在双ADC模式下,2个通道可以独立地进行转换,也可同时转换并同步更新2个通道的输出通过引脚输入参考电压Vref+获取更精准度转换结果一旦使能DACx某个通道,相应的GPIO引脚(PA4和PA5)就会自动于DAC的模拟输出相连,为了避免寄生的干扰和额外的功率,要将PA4和PA5设置为模拟输入。2.原创 2021-11-01 16:04:24 · 348 阅读 · 0 评论 -
SysTick
概述SysTick: 24位,只能递减,存在于内核,嵌套在NVIC中,所有Cortex-M内核的单片机都具有这个定时器系统滴答校准值固定为9000,当系统滴答时钟设定位9MHz(HCK/8的最大值),产生1ms时间的基准.4个systick寄存器: CTRL 控制和状态寄存器 LOAD:自动重装载初值寄存器 VAL:当前值寄存器...原创 2021-07-05 23:01:41 · 1499 阅读 · 0 评论 -
独立看门狗(寄存器/库函数)
独立看门狗就是一个向下计数的定时器,但是这个定时器比较特殊,当他的重装载值减到0时,就要重新装置,也就是喂狗,要不然他就会给系统复位#ifndef IWDG_H#define IWDG_H#include "stm32f10x.h"void iwdg_init(uint8_t IWDG_Prescaler,uint16_t Reload);#endif#include "iwdg.h"void iwdg_init(uint8_t IWDG_Prescaler,uint16_原创 2021-06-06 23:40:41 · 383 阅读 · 1 评论 -
外部中断(库函数)
/* 头文件*/#ifndef EXTI_H#define EXTI_H#include "stm32f10x.h"#include "led.h"void exti_init(void);#endif原创 2021-06-05 00:31:02 · 949 阅读 · 3 评论 -
USART
/*usart.h 文件*/#ifndef USART_H#define USART_H#include "stm32f10x.h"void usart_init(u32 bound);#endif原创 2021-06-05 00:06:56 · 645 阅读 · 1 评论 -
系统时钟配置
#define RCC ((RCC_TypeDef *) RCC_BASE):我们先定义一个结构体指针RCC_BASE,我们知道指针就是地址空间,我们确定了一个结构体的首地址,那么这个结构体的大小随之确定了,这个结构体的成员将会按首地址依次排列,并逐个占用地址空间.访问一个结构体指针成员我们用RCC->CR.RCC->CR寄存器: void SystemInit (void){//启动内部高速8MHz振荡器 RCC->CR |= (ui...原创 2021-01-22 00:15:36 · 647 阅读 · 1 评论 -
按键输入(库函数)
#ifndef KEY_H#define KEY_H#include "stm32f10x.h"#define KEY0 GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)#define KEY3 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_3)#define KEY4 GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_4)void key_init(void);#endif..原创 2021-06-04 23:48:44 · 680 阅读 · 0 评论 -
STM32按键输入(寄存器)
1.使能时钟 RCC->APB2ENR|=1<<2;//使能GPIOA的时钟 RCC->APB2ENR|=1<<6;//使能GPIOE的时钟2.设置GPIO输入模式 PA0设置为输入,当ODR不设置时,默认为下拉,也可以将ODR设置位0来设置下拉输入 GPIOA->CRL&=0xfffffff0; GPIOA->CRL|=0x00000008; PE3/4设置为输入,设...原创 2021-01-17 21:28:26 · 1959 阅读 · 1 评论 -
点亮小灯(库函数)
#ifndef LED_H#define LED_H#include "stm32f10x.h"#define ON 1#define OFF 0void led_init(void);void LED0(u8 stauts);void LED1(u8 stauts);#endif#include "led.h"void led_init(void){ GPIO_InitTypeDef GPIO_InitStucture; RCC_APB2PeriphClockCm.原创 2021-06-04 23:38:36 · 292 阅读 · 0 评论 -
STM32点亮LED(寄存器)
STM32原创 2021-01-15 23:19:07 · 294 阅读 · 0 评论