当前位置: 首页 > wzjs >正文

大学做兼职英语作文网站网络服务公司

大学做兼职英语作文网站,网络服务公司,网站建设捌金手指花总二五,wordpress 附件路径stm32学习 九.stm32与HAL库 4.时钟树 stm32f103所拥有的时钟源: 外部时钟的稳定性比内部的高,但是成本高,需要在外部额外接 关于上述时钟树的简图: 右下四个是HAL库中的初始化函数 F4的时钟树简图: F7的时钟树简图…

stm32学习

九.stm32与HAL库

4.时钟树

stm32f103所拥有的时钟源:

图片消失了

外部时钟的稳定性比内部的高,但是成本高,需要在外部额外接

图片消失了

关于上述时钟树的简图:

图片消失了

右下四个是HAL库中的初始化函数

F4的时钟树简图:

图片消失了

F7的时钟树简图:

图片消失了

H7的时钟树简图:

图片消失了

低频的部分与其它型号的一致
H7除内外部的高速低速振荡器以外,还有高速内部振荡器(HSI48)、低功耗内部振荡器(CSI)、时钟安全系统(CSS)、特殊时钟恢复系统(CRS)

5.时钟初始化函数

HAL库中使能某个外设的时钟:__HAL_RCC_GPIOA_CLK_ENABLE();

系统时钟初始化函数(sys_stm32_clock_init函数):HAL_RCC_OscConfig()和HAL_RCC_ClockConfig()
OscConfig的作用是初始化底层振荡器硬件,包括内外部高低速晶振
ClockConfig的作用是配置系统级时钟树,包括系统时钟(SYSCLK)、AHB/APB总线时钟等

F1芯片的系统时钟初始化函数的用法:
OscConfig函数:

HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)// 初始化函数typedef struct
{uint32_t OscillatorType;       // 振荡器类型(HSE/HSI/LSE/LSI)uint32_t HSEState;             // HSE状态(使能/旁路/关闭)uint32_t HSEPredivValue;       // HSE预分频值uint32_t HSIState;             // HSI状态(使能/校准)uint32_t HSICalibrationValue;  // HSI校准值uint32_t LSEState;             // LSE状态(使能/关闭)uint32_t LSIState;             // LSI状态(使能/校准)HAL_RCC_PLLInitTypeDef PLLInit;// PLL具体参数(倍频/分频因子)
} HAL_RCC_OscConfigTypeDef;typedef struct
{uint32_t PLLState;          /*!< PLL 使能/关闭状态 */uint32_t PLLSource;         /*!< PLL 输入时钟源 */uint32_t PLLMUl;            /*!PLL倍频系数*/
} HAL_RCC_PLLInitTypeDef;

ClockConfig函数:

HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t Flatency);              // Flatency是flash等待周期typedef struct
{uint32_t ClockType;            // 要配置的时钟(SYSCLK/HCLK/PCLK1/PCLK2)uint32_t SYSCLKSource;         // 系统时钟源(PLL/HSE/HSI)uint32_t AHBCLKDivider;        // AHB总线分频系数uint32_t APB1CLKDivider;       // APB1总线分频系数(低速外设)uint32_t APB2CLKDivider;       // APB2总线分频系数(高速外设)
} HAL_RCC_ClockConfigTypeDef;

F4/7系列的系统时钟初始化函数:
OscConfig函数(除PLL初始化外与F1一致):

typedef struct
{uint32_t PLLState;          /*!< PLL 使能/关闭状态 */uint32_t PLLSource;         /*!< PLL 输入时钟源 */uint32_t PLLM;              /*!< 输入时钟分频因子(仅针对 HSE/HSI 输入) */uint32_t PLLN;              /*!< 倍频因子 */uint32_t PLLP;              /*!< 主输出分频因子(供系统时钟 SYSCLK) */uint32_t PLLQ;              /*!< 副输出分频因子(供 USB/SDIO 等外设) */
} HAL_RCC_PLLInitTypeDef;

ClockConfig函数:与F1一致

H7系列:
OscConfig函数:

HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)// 初始化函数typedef struct
{uint32_t OscillatorType;       // 振荡器类型(HSE/HSI/LSE/LSI)uint32_t HSEState;             // HSE状态(使能/旁路/关闭)uint32_t HSIState;             // HSI状态(使能/校准)uint32_t HSICalibrationValue   // HSI校准值uint32_t LSEState;             // LSE状态(使能/关闭)uint32_t LSIState;             // LSI状态(使能/校准)uint32_t HSI48State;           // HSI48状态uint32_t CSIState;             // CSI状态uint32_t CSICalibrationValue   //CSI校准微调值HAL_RCC_PLLInitTypeDef PLLInit;// PLL具体参数(倍频/分频因子)
} HAL_RCC_OscConfigTypeDef;typedef struct
{uint32_t PLLState;          /*!< PLL 使能/关闭状态 */uint32_t PLLSource;         /*!< PLL 输入时钟源 */uint32_t PLLM;              /*!< 输入时钟分频因子(仅针对 HSE/HSI 输入) */uint32_t PLLN;              /*!< 倍频因子 */uint32_t PLLP;              /*!< 主输出分频因子(供系统时钟 SYSCLK) */uint32_t PLLQ;              /*!< 副输出分频因子(供 USB/SDIO 等外设) */uint32_t PLLR;              //分频系数Ruint32_t PLLRGE;            // PLL时钟输入范围uint32_t PLLVCOSEL;         // PLL时钟输出范围uint32_t PLLFRACN;          // PLL VCO乘数因子的小数部分
} HAL_RCC_PLLInitTypeDef;

ClockConfig函数:

HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t Flatency);              // Flatency是flash等待周期typedef struct
{uint32_t ClockType;            // 要配置的时钟(SYSCLK/HCLK/PCLK1/PCLK2)uint32_t SYSCLKSource;         // 系统时钟源(PLL/HSE/HSI)uint32_t AHBCLKDivider;        // AHB总线分频系数uint32_t APB1CLKDivider;       // APB1总线分频系数(低速外设)uint32_t APB2CLKDivider;       // APB2总线分频系数(高速外设)uint32_t APB3CLKDivider;       // APB3总线分频系数(高速外设)uint32_t APB4CLKDivider;       // APB4总线分频系数(高速外设)
} HAL_RCC_ClockConfigTypeDef;

拓展时钟的初始化函数,结构体的参数过多,省略:

图片消失了

6.sys文件夹和SysTick

sys文件夹的内容:

图片消失了

SysTick,即系统滴答定时器,包含在M3/4/7内核里面,核心是一个24位的递减计数器

图片消失了

HCLK下方的是H7系列的给SysTick提供时钟源的

与SysTick相关的寄存器:
SysTick控制及状态寄存器(CTRL):

图片消失了

SysTick重装载数值寄存器(LOAD)

图片消失了

SysTick当前数值寄存器(VAL):

图片消失了

复位值为0

7.delay函数

delay_init()函数:

图片消失了

sysclk为72(一般),先将CTRL的值设为0,再将系统时钟的分频值设为8分频,g_fac_us为全局变量,值为9(要数9次才有1us)

delay_us()函数:

图片消失了

1<<0的作用是将十进制的1转换成0x01

delay_ms()函数:

图片消失了

delay_ms是由delay_us实现的

8.printf函数

printf函数输出流程:

图片消失了

在不用半主机模式的情况下实现printf的方法:微库法、代码法
微库法简单但消耗
微库法:

图片消失了

代码法:1个预处理、2个定义、3个函数

  1. #pragma import(__use_no_semihosting),确保不从C库中使用半主机函数
  2. 定义__FILE结构体,避免HAL库某些情况下报错
  3. 定义FILE__stdout,避免编译报错
  4. 实现_ttywrch、_sys_exit和_sys_command_string三个函数

实现fputc函数:

图片消失了

十.GPIO

1.简介

General Purpose Input Output,即通用输入输出端口,简称GPIO
作用:负责采集外部期间的信息或者控制外部器工作,即输入输出
特点:

  1. 每个IO口都可以做中断
  2. 快速翻转,每次翻转最快需要两个时钟周期
  3. 工作电压范围2v <= VDD <= 3.6v
  4. GPIO识别电压:COMS端口:-0.3v <= V I L V_{IL} VIL <= 1.164v,1.833v <= V I H V_{IH} VIH <= 3.6v
  5. 输出电流:单个IO,最大25mA
http://www.dtcms.com/wzjs/72887.html

相关文章:

  • 百度搜索自己的网站百度一下你就知道官页
  • it行业做网站一个月多少钱百度小说排行榜第一名
  • 泰安网络直销公司seo优化就业前景
  • 日本做任务赚钱的网站有哪些培训机构网站设计
  • 宝塔怎么做网站的301跳转企业中层管理人员培训课程
  • 房地产开发公司注册条件搜索引擎优化seo多少钱
  • html5手机网站模板下载网络服务网络推广
  • 网站排名外包大白兔网络营销策划书
  • 公司网站二维码怎么做的怎样在百度上做广告推广
  • 营销型网站建设发难seo优化技术厂家
  • 网站开发实用技术答案360点睛实效平台推广
  • 怎么用axure做自适应网站西安seo优化工作室
  • 电脑网站进不去网页怎么办关于友情链接说法正确的是
  • 广西工程建设质量管理协会网站网站优化公司哪个好
  • 网站建设中模版windows优化大师是官方的吗
  • 阿里巴巴有没有帮做网站的公司福州seo技巧培训
  • 乌鲁木齐市网站网络推广关键词优化公司
  • 怎么提高seo排名陕西新站seo
  • 做公司网站的模板下载产品推广软文
  • 淘宝导购网站怎么做百度代理授权查询
  • 一站式网站建设服务商百度账号注册入口
  • 射洪做网站获客渠道找精准客户
  • 如何做网站主题今日军事新闻最新消息新闻
  • 建设公寓租房信息网站sem代运营费用
  • 做外汇模拟的网站技术培训机构排名前十
  • 万户网络seo优化是什么
  • 行远金华网站建设公司免费b站推广短视频
  • 怎么能看出别人的网站是哪一家做公司网站模版
  • 潍坊个人做网站的公司b2b网站源码
  • 网络营销的特点主要有哪些初学seo网站推广需要怎么做