<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: kisorge</title>
    <description>The latest articles on DEV Community by kisorge (@kisorge).</description>
    <link>https://dev.to/kisorge</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2977695%2Fd63913f1-65d9-44f1-abc1-a696f3bd0dab.jpg</url>
      <title>DEV Community: kisorge</title>
      <link>https://dev.to/kisorge</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kisorge"/>
    <language>en</language>
    <item>
      <title>【电机控制器】FM33LF015芯片——定时器</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Wed, 11 Jun 2025 02:19:01 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-ding-shi-qi-14ff</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-ding-shi-qi-14ff</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——定时器&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.FM33LF015开发板&lt;br&gt;
2.J-OBV2仿真烧录器&lt;br&gt;
3.USB-TTL&lt;br&gt;
4.上位机串口助手&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、16 位基本定时器（BSTIM16）
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.概述
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jmu1x7suq4sirgw8k5h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9jmu1x7suq4sirgw8k5h.png" alt="在这里插入图片描述" width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhtysvqpbs2m9ghb52np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbhtysvqpbs2m9ghb52np.png" alt="在这里插入图片描述" width="302" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.时序框图
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feupf3mgmodw3n2oigtyt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feupf3mgmodw3n2oigtyt.png" alt="在这里插入图片描述" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、通用定时器（GPTIM0,1）
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c01vtt596q4dvanxdou.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c01vtt596q4dvanxdou.png" alt="在这里插入图片描述" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、高级定时器（ATIM）
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0tgfxvqabu45iuhrmk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi0tgfxvqabu45iuhrmk4.png" alt="在这里插入图片描述" width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  四、16 位低功耗定时器（LPTIM16）
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcn7c2zrg44epgneq7x1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcn7c2zrg44epgneq7x1p.png" alt="在这里插入图片描述" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  五、代码
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;晶振选用内部RCHF高频 8M &lt;br&gt;
定时器时基计算：8000*1000/8M=1s&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;MF_BSTIM16_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_BSTIM16_InitTypeDef&lt;/span&gt; &lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;FL_NVIC_ConfigTypeDef&lt;/span&gt; &lt;span class="n"&gt;nvic&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;//-------------------------------------------   &lt;/span&gt;
    &lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prescaler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8000&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="c1"&gt;//8M/8 = 1M                    /* 预分频系数 */&lt;/span&gt;
    &lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autoReload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;//1/1M*1000 =1ms        /* 自动重装载值 */&lt;/span&gt;
    &lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autoReloadState&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ENABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                    &lt;span class="cm"&gt;/* 预装载使能 */&lt;/span&gt;
    &lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clockSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_CMU_BSTIM16_CLK_SOURCE_APBCLK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="cm"&gt;/* 时钟源 */&lt;/span&gt;

    &lt;span class="n"&gt;FL_BSTIM16_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BSTIM16&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;Bstim16&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;//-------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;//溢出中断&lt;/span&gt;
    &lt;span class="n"&gt;FL_BSTIM16_ClearFlag_Update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BSTIM16&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;FL_BSTIM16_EnableIT_Update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;BSTIM16&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;nvic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;preemptPriority&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mh"&gt;0x02&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;FL_NVIC_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;nvic&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;BSTIM_IRQn&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;


&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;Timer_1ms_Deal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;Key_Scan&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
            &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
        &lt;span class="c1"&gt;//LED1_TOG();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  六、实验——基本定时器
&lt;/h1&gt;

&lt;p&gt;通过打印的时间间隔，可以看出定时器的时间为1s&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59l1d8evmlmjdubduj1w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59l1d8evmlmjdubduj1w.png" alt="在这里插入图片描述" width="382" height="89"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  七、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/qq_26039331/article/details/129718276?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f287261ac668dd5616acb61360ce9e73%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=f287261ac668dd5616acb61360ce9e73&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-129718276-null-null.nonecase&amp;amp;utm_term=%E5%AE%9A%E6%97%B6%E5%99%A8%E9%85%8D%E7%BD%AE%E8%BF%87%E7%A8%8B&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【STM32学习】定时器寄存器配置、功能工作过程详解&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/Liu1013216383/article/details/134402610?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229ee6a9ae5d69a84efc3227638e91e449%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=9ee6a9ae5d69a84efc3227638e91e449&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_click~default-1-134402610-null-null.nonecase&amp;amp;utm_term=stm32f103%E5%AE%9A%E6%97%B6%E5%99%A8%E6%97%B6%E9%97%B4%E8%AE%A1%E7%AE%97&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;stm32f103定时器配置与时间计算公式&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/nayuta0728/article/details/131214833?ops_request_misc=%257B%2522request%255Fid%2522%253A%252248b03c0097fb0a5c6da3afdd5af51a2b%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=48b03c0097fb0a5c6da3afdd5af51a2b&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-131214833-null-null.nonecase&amp;amp;utm_term=stm32f103%E5%AE%9A%E6%97%B6%E5%99%A8%E6%97%B6%E9%92%9F%E6%BA%90&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;STM32 TIM（一）定时中断+时钟源选择&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——定时器，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——JLINK仿真</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Wed, 11 Jun 2025 02:18:23 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-jlinkfang-zhen-2775</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-jlinkfang-zhen-2775</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——JLINK仿真&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.ARM仿真器/J-OBV2仿真器&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、接线
&lt;/h1&gt;

&lt;p&gt;VCC——3.3&lt;br&gt;
GND——GND&lt;br&gt;
SWDIO——SWDIO&lt;br&gt;
SWCLK——SWCLK&lt;/p&gt;

&lt;h1&gt;
  
  
  二、KEIL设置
&lt;/h1&gt;

&lt;p&gt;一定注意需要配置connect 和reset ，不然可能会报错&lt;br&gt;
如果想烧录后不用复位就运行，就把reset and run勾选&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6l2a4345tgq8xeb49jc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx6l2a4345tgq8xeb49jc.png" alt="在这里插入图片描述" width="800" height="718"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qonl70ng44fhcrg9b7v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2qonl70ng44fhcrg9b7v.png" alt="在这里插入图片描述" width="800" height="718"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、实验
&lt;/h1&gt;

&lt;p&gt;把ADC内部温度变量通过仿真和串口进行对比，可以看出来有误差，但是基本上差不多&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2hw33degpuuoi74xsep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2hw33degpuuoi74xsep.png" alt="在这里插入图片描述" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  四、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/qq_45583758/article/details/144027594?ops_request_misc=%257B%2522request%255Fid%2522%253A%25226192715f9a5d9848ca64444ad1c4bef6%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=6192715f9a5d9848ca64444ad1c4bef6&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-144027594-null-null.nonecase&amp;amp;utm_term=KEIL%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8DEBUG%E5%8A%9F%E8%83%BD%E6%8E%92%E6%9F%A5%E4%BB%A3%E7%A0%81&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;Keil 5常用Debug功能及方法简述&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.fmdevelopers.com.cn/forum.php?mod=viewthread&amp;amp;tid=1749" rel="noopener noreferrer"&gt;复旦微MCU相关资料下载汇总 &lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/qq_65102825/article/details/135940991?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227af7e82486826ca1189627696e3b464a%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=7af7e82486826ca1189627696e3b464a&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~baidu_landing_v2~default-2-135940991-null-null.nonecase&amp;amp;utm_term=jlink%E7%9A%84sw&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【分享】JLINK的SW调试模式连线方式&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/weixin_46485690/article/details/134562174?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227a9e7b14390ffb6f579d778f553750d5%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=7a9e7b14390ffb6f579d778f553750d5&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-134562174-null-null.nonecase&amp;amp;utm_term=jlink%E9%A9%B1%E5%8A%A8%E5%AE%89%E8%A3%85&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【JLink】【JFlash】全网最详细JLink烧写流程！含驱动安装流程及烧写步骤&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——JLINK仿真，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——时钟管理单元CMU</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 08:21:44 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-shi-zhong-guan-li-dan-yuan-cmu-2889</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-shi-zhong-guan-li-dan-yuan-cmu-2889</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——时钟管理单元CMU&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、概述
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gatqhirx9ifrb50krei.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2gatqhirx9ifrb50krei.png" alt="在这里插入图片描述" width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、时钟树
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6keeu0mdfow29tvj9o5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6keeu0mdfow29tvj9o5.png" alt="在这里插入图片描述" width="800" height="678"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、6种时钟源
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;系统主时钟(SYSCLK)可由XTLF、RCHF、XTHF、PLL、RCLP、RCLF及它们的分频时钟产生&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hw1d8jhzcptekojnbt7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6hw1d8jhzcptekojnbt7.png" alt="在这里插入图片描述" width="800" height="459"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1.  高频 RC 振荡器(RCHF)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;RCHF有两种用途， &lt;br&gt;
作用：&lt;br&gt;
1.提供给系统时钟，高频RC振荡器典型振荡频率为8/16/24/32MHz，&lt;br&gt;
2.给PLL提供时基，进而倍频后再给系统时钟，使用PLL将RCHF倍频到最高64Mhz&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;芯片上电后默认使用RCHF 8MHz时钟工作，硬件电路会自动从LDT0读取8MHz校准值，保证8MHz&lt;br&gt;
频率误差小于+/-0.5%。&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;如果软件需要使用其他频率，则按照以下步骤操作：&lt;br&gt;
 ⚫ 改写CMU_RCHFCR.FSEL &lt;br&gt;
 ⚫ 从LDT0读取对应频率的调校值（常温校准值）&lt;br&gt;
  ⚫ 将频率调校值写入CMU_RCHTR寄存器，即可得到常温下目标频率误差小于+/-0.5%的时钟&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepfpvkf0v2h54m3wyq85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fepfpvkf0v2h54m3wyq85.png" alt="在这里插入图片描述" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.  低频 RC 振荡器(RCLF)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;RCLF是一个低功耗中频环振，典型频率614.4KHz，用于CPU低功耗低速运行，以及为LPUART提&lt;br&gt;
供工作时钟，以实现准确的9600波特率收发。&lt;br&gt;
作用：&lt;br&gt;
1.提供UART时基&lt;br&gt;
2.提供系统时钟&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgabn1fbkjm60vmnqssjk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgabn1fbkjm60vmnqssjk.png" alt="在这里插入图片描述" width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2khss3cz88ojhkyhlf6d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2khss3cz88ojhkyhlf6d.png" alt="在这里插入图片描述" width="482" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3.  低功耗 RC 振荡器(RCLP)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;RCLP是一个极地功耗的低频环振，典型频率32Khz，典型功耗仅300nA。此环振可用于XTLF的备&lt;br&gt;
份时钟，也可用于CPU低速运行和部分外设工作。&lt;br&gt;
作用：&lt;br&gt;
1.提供RTC时基&lt;br&gt;
2.部分外设实际&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44em3k664ovsxeqns2hh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F44em3k664ovsxeqns2hh.png" alt="在这里插入图片描述" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh5czx9rn04dvrpvvpma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffh5czx9rn04dvrpvvpma.png" alt="在这里插入图片描述" width="448" height="614"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4.  低频晶体振荡电路(XTLF)——外接晶振
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;低频晶体振荡电路通过外接32768Hz晶体提供稳定的振荡源，功耗极低&lt;br&gt;
作用：&lt;br&gt;
1.提供RTC时基&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js5nbjk5qim58ke81on.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7js5nbjk5qim58ke81on.png" alt="在这里插入图片描述" width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. 高频晶体振荡电路(XTHF)——外接晶振
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;通过外接高频晶体，XTHF能够为MCU提供高精度的高频时钟源。静态和负载电容应尽可能靠近&lt;br&gt;
XTHF引脚布置，其中负载电容大小应合理选择，以适配所选用的晶体类型。&lt;br&gt;
XTHF可以适配4~32MHz晶体。&lt;br&gt;
作用：&lt;br&gt;
1.提供给系统时钟&lt;br&gt;
2.提供PLL时基&lt;br&gt;
3.提供外围电路时基，例如ADC&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6e342wb3l40l2e1jwe9k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6e342wb3l40l2e1jwe9k.png" alt="在这里插入图片描述" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6. 锁相环(PLL)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;锁相环输入参考时钟可以是RCHF或XTHF分频，输入频率固定为1MHz，最高输出频率可达72MHz。&lt;br&gt;
软件使用PLL作为系统时钟前，需配置输入参考时钟和倍频系数。&lt;br&gt;
作用：&lt;br&gt;
1.提供给系统时钟&lt;br&gt;
2.提供外围电路时基，例如ADC&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssx58jueskiz5kpybirg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fssx58jueskiz5kpybirg.png" alt="在这里插入图片描述" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;配置PLL输出72MHz，并使系统以72MHz主频运行：&lt;br&gt;
 ⚫ 配置PLLCR寄存器，选择输入时钟源和输出时钟频率&lt;br&gt;
  ⚫ 设置Flash&lt;br&gt;
wait cycle为2 &lt;br&gt;
⚫ 使能PREFETCH（可选）&lt;br&gt;
 ⚫ 将AHB时钟选择为PLL输出&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  三、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/m0_73109662/article/details/138244871?ops_request_misc=%257B%2522request%255Fid%2522%253A%25225830f16d9db23e97a3decda6bf272b93%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=5830f16d9db23e97a3decda6bf272b93&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~baidu_landing_v2~default-2-138244871-null-null.nonecase&amp;amp;utm_term=STM32%E6%97%B6%E9%92%9F%E7%AE%A1%E7%90%86&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;stm32——时钟控制（CLOCK CONTROL）&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——时钟管理单元CMU，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——ADC温度传感器</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 08:12:55 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-adcwen-du-chuan-gan-qi-3gc5</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-adcwen-du-chuan-gan-qi-3gc5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——ADC温度传感器&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.FM33LF015开发板&lt;br&gt;
2.J-OBV2仿真烧录器&lt;br&gt;
3.USB-TTL&lt;br&gt;
4.上位机串口助手&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fu0lnlw19bl3mpdljty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fu0lnlw19bl3mpdljty.png" alt="在这里插入图片描述" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、概述
&lt;/h1&gt;

&lt;p&gt;亮点：&lt;br&gt;
1.有两个运算放大器，对于电机控制来说是不错的&lt;br&gt;
2.支持DMA&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4ryo0e16zpnhab6ug7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4ryo0e16zpnhab6ug7.png" alt="在这里插入图片描述" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  二、温度传感器计算公式
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp54v8sbqrfoovw2xyddj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp54v8sbqrfoovw2xyddj.png" alt="在这里插入图片描述" width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  三、代码
&lt;/h1&gt;

&lt;p&gt;main.c&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="kt"&gt;float&lt;/span&gt;  &lt;span class="n"&gt;GetT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* Configure the system clock */&lt;/span&gt;
    &lt;span class="n"&gt;MF_Clock_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="cm"&gt;/* Initialize FL Driver Library */&lt;/span&gt;
    &lt;span class="n"&gt;FL_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="cm"&gt;/* Initialize all configured peripherals */&lt;/span&gt;
    &lt;span class="n"&gt;MF_Config_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="cm"&gt;/* 串口0初始化 */&lt;/span&gt;
        &lt;span class="n"&gt;MF_UART0_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="cm"&gt;/* 高级定时器PWM PB7输出 */&lt;/span&gt;
        &lt;span class="c1"&gt;//MF_ATIM_PWM_Config_Init();&lt;/span&gt;
        &lt;span class="cm"&gt;/* 基础定时器1ms */&lt;/span&gt;
        &lt;span class="n"&gt;MF_BSTIM16_Config_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="cm"&gt;/* 看门狗初始化 */&lt;/span&gt;
        &lt;span class="n"&gt;WDG_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="n"&gt;LED1_OFF&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="cm"&gt;/* Initial ADC */&lt;/span&gt;
    &lt;span class="n"&gt;MF_ADC_Common_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;                                                               &lt;span class="cm"&gt;/*ADC基础配置*/&lt;/span&gt;
    &lt;span class="n"&gt;MF_ADC_Init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;   
    &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;   
                &lt;span class="n"&gt;GetT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GetTS_POLL&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"温度 = %3f&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;GetT&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  
                &lt;span class="n"&gt;WDG_Reset&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;Run_Systimer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
                &lt;span class="n"&gt;Function_Deal&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;mf_adc.c&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cm"&gt;/* Includes ------------------------------------------------------------------*/&lt;/span&gt;

&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;"mf_config.h"&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="cm"&gt;/**
  * @brief  ADC_Common Initialization function
  * @param  void
  * @retval None
  */&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;MF_ADC_Common_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_CommonInitTypeDef&lt;/span&gt;    &lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clockSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_CMU_ADC_CLK_SOURCE_RCHF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                         &lt;span class="cm"&gt;/*配置ADC工作时钟源*/&lt;/span&gt;
    &lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clockPrescaler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_CLK_PSC_DIV8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                             &lt;span class="cm"&gt;/*配置ADC工作时钟分配*/&lt;/span&gt;
    &lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;referenceSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_REF_SOURCE_VDDA&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                         &lt;span class="cm"&gt;/*配置ADC参考源*/&lt;/span&gt;
    &lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;bitWidth&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_BIT_WIDTH_12B&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                  &lt;span class="cm"&gt;/*配置ADC输出位宽*/&lt;/span&gt;

    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;FL_ADC_CommonInit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;Common_InitStruct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
  * @brief  ADC Initialization function
  * @param  void
  * @retval None
  */&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;MF_ADC_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_InitTypeDef&lt;/span&gt;    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;conversionMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_CONV_MODE_SINGLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                            &lt;span class="cm"&gt;/*配置ADC转换模式*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autoMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_SINGLE_CONV_MODE_AUTO&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                             &lt;span class="cm"&gt;/*配置ADC转换流程，仅对单次转换有效*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;waitMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ENABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                                &lt;span class="cm"&gt;/*配置ADC等待模式*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;overrunMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ENABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                             &lt;span class="cm"&gt;/*配置ADC_Overrun模式*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;scanDirection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_SEQ_SCAN_DIR_FORWARD&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                         &lt;span class="cm"&gt;/*配置ADC扫描顺序*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;externalTrigConv&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_TRIGGER_EDGE_NONE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                         &lt;span class="cm"&gt;/*配置非软件触发使能及极性*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;triggerSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_DISABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                          &lt;span class="cm"&gt;/*配置ADC非软件触发源*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fastChannelTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_FAST_CH_SAMPLING_TIME_2_ADCCLK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;             &lt;span class="cm"&gt;/*配置ADC快速通道采样时间*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lowChannelTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_SLOW_CH_SAMPLING_TIME_512_ADCCLK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;            &lt;span class="cm"&gt;/*配置ADC慢速通道采样时间*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;oversamplingMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_DISABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                                       &lt;span class="cm"&gt;/*配置ADC过采样模式*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;overSampingMultiplier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_OVERSAMPLING_MUL_16X&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                 &lt;span class="cm"&gt;/*配置ADC过采样率*/&lt;/span&gt;
    &lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;oversamplingShift&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_OVERSAMPLING_SHIFT_4B&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;                    &lt;span class="cm"&gt;/*配置ADC过采样结果移位*/&lt;/span&gt;

    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;FL_ADC_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;ADC_InitStruct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;FL_ADC_EnableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_INTERNAL_TS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                             &lt;span class="cm"&gt;/*通道选择*/&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="nf"&gt;GetVREF1P2Sample_POLL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ADCRdresult&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;EOC_Flag&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;FL_CMU_SetADCPrescaler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FL_CMU_ADC_PSC_DIV8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                    &lt;span class="c1"&gt;//配置ADC工作时钟分频&lt;/span&gt;
    &lt;span class="n"&gt;FL_VREF_EnableVREFBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;VREF&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                 &lt;span class="c1"&gt;//使能VREF BUFFER,&lt;/span&gt;
    &lt;span class="c1"&gt;//为了考虑功耗BUFFER可关闭，从使能到ADC可以正常采样需要100us的建立时间，本例程配置慢速通道较长的采样时间，来保证建立时间满足。&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_DisableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_ALL_CHANNEL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;        &lt;span class="c1"&gt;//清空打开的通道&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_EnableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_INTERNAL_VREF1P2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;    &lt;span class="c1"&gt;//通道选择&lt;/span&gt;

    &lt;span class="n"&gt;FL_ADC_ClearFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                          &lt;span class="c1"&gt;//清标志&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_Enable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                             &lt;span class="c1"&gt;//启动ADC&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_EnableSWConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                 &lt;span class="c1"&gt;//开始转换&lt;/span&gt;

    &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_IsActiveFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mh"&gt;0xFFFFFFFFU&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0U&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;           &lt;span class="c1"&gt;//等待转换完成&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mh"&gt;0x01U&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;FL_ADC_ClearFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                        &lt;span class="c1"&gt;//清标志&lt;/span&gt;
        &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ADCRdresult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_ReadConversionData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                 &lt;span class="c1"&gt;//获取采样值&lt;/span&gt;

        &lt;span class="n"&gt;FL_ADC_Disable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                          &lt;span class="c1"&gt;//关闭ADC&lt;/span&gt;
        &lt;span class="n"&gt;FL_ADC_DisableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_INTERNAL_VREF1P2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//通道关闭&lt;/span&gt;
        &lt;span class="n"&gt;FL_VREF_DisableVREFBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;VREF&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                              &lt;span class="c1"&gt;//关闭VREF BUFFER&lt;/span&gt;
        &lt;span class="n"&gt;State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;span class="k"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="nf"&gt;GetTSSample_POLL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ADCRdresult&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;EOC_Flag&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;uint8_t&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;FL_CMU_SetADCPrescaler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FL_CMU_ADC_PSC_DIV8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                  &lt;span class="c1"&gt;//配置ADC工作时钟分频&lt;/span&gt;
    &lt;span class="n"&gt;FL_VREF_EnableVPTATBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;VREF&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                              &lt;span class="c1"&gt;//使能PTATBUFFER&lt;/span&gt;
    &lt;span class="c1"&gt;//为了考虑功耗BUFFER可关闭，从使能到ADC可以正常采样需要100us的建立时间，本例程配置慢速通道较长的采样时间，来保证建立时间满足。&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_DisableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_ALL_CHANNEL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;      &lt;span class="c1"&gt;//清空打开的通道&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_EnableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_INTERNAL_TS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;//通道选择&lt;/span&gt;

    &lt;span class="n"&gt;FL_ADC_ClearFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                        &lt;span class="c1"&gt;//清标志&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_Enable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                           &lt;span class="c1"&gt;//启动ADC&lt;/span&gt;
    &lt;span class="n"&gt;FL_ADC_EnableSWConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                               &lt;span class="c1"&gt;//开始转换&lt;/span&gt;

    &lt;span class="k"&gt;do&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_IsActiveFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;counter&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;counter&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mh"&gt;0xFFFFFFFFU&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0U&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;         &lt;span class="c1"&gt;//等待转换完成&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;EOC_Flag&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mh"&gt;0x01U&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;FL_ADC_ClearFlag_EndOfConversion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                      &lt;span class="c1"&gt;//清标志&lt;/span&gt;
        &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;ADCRdresult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_ReadConversionData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;               &lt;span class="c1"&gt;//获取采样值&lt;/span&gt;

        &lt;span class="n"&gt;FL_ADC_Disable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;                                        &lt;span class="c1"&gt;//关闭ADC&lt;/span&gt;
        &lt;span class="n"&gt;FL_ADC_DisableSequencerChannel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_ADC_INTERNAL_TS&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;    &lt;span class="c1"&gt;//通道关闭&lt;/span&gt;
        &lt;span class="n"&gt;State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;State&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="nf"&gt;GetTS_POLL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;VPTAT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;VPTAT_30&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetTSSample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetVREF1P2Sample&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;uint8_t&lt;/span&gt;  &lt;span class="n"&gt;Get122VSample_State&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetTSample_State&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kt"&gt;float&lt;/span&gt; &lt;span class="n"&gt;GetTS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mo"&gt;00&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;Get122VSample_State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GetVREF1P2Sample_POLL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;GetVREF1P2Sample&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;GetTSample_State&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GetTSSample_POLL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;GetTSSample&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;GetVREF1P2Sample&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Get122VSample_State&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GetTSample_State&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;VPTAT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt;&lt;span class="p"&gt;)(((&lt;/span&gt;&lt;span class="kt"&gt;uint64_t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;GetTSSample&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ADC_VREF&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;uint64_t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;GetVREF1P2Sample&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4095&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="n"&gt;VPTAT_30&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;ADC_TS&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4095&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;GetTS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;VPTAT&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;float&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;VPTAT_30&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="c1"&gt;// 转换结果&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;GetTS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  四、实验
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxe1vi6nuisvx70rny88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxe1vi6nuisvx70rny88.png" alt="在这里插入图片描述" width="723" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  五、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/u011011827/article/details/119136359?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522b81133ff9bcf65082b13a7f96b4fc2d4%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=b81133ff9bcf65082b13a7f96b4fc2d4&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-119136359-null-null.nonecase&amp;amp;utm_term=%20keil%20printf&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;keil 下如何使用printf&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/qq_26039331/article/details/129718276?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f287261ac668dd5616acb61360ce9e73%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=f287261ac668dd5616acb61360ce9e73&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-129718276-null-null.nonecase&amp;amp;utm_term=%E5%AE%9A%E6%97%B6%E5%99%A8%E9%85%8D%E7%BD%AE%E8%BF%87%E7%A8%8B&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【STM32学习】定时器寄存器配置、功能工作过程详解&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/Liu1013216383/article/details/134402610?ops_request_misc=%257B%2522request%255Fid%2522%253A%25229ee6a9ae5d69a84efc3227638e91e449%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=9ee6a9ae5d69a84efc3227638e91e449&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_click~default-1-134402610-null-null.nonecase&amp;amp;utm_term=stm32f103%E5%AE%9A%E6%97%B6%E5%99%A8%E6%97%B6%E9%97%B4%E8%AE%A1%E7%AE%97&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;stm32f103定时器配置与时间计算公式&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/nayuta0728/article/details/131214833?ops_request_misc=%257B%2522request%255Fid%2522%253A%252248b03c0097fb0a5c6da3afdd5af51a2b%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=48b03c0097fb0a5c6da3afdd5af51a2b&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-131214833-null-null.nonecase&amp;amp;utm_term=stm32f103%E5%AE%9A%E6%97%B6%E5%99%A8%E6%97%B6%E9%92%9F%E6%BA%90&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;STM32 TIM（一）定时中断+时钟源选择&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——定时器，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——FLASH模拟EEPROM</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 08:12:15 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-flashmo-ni-eeprom-3lch</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-flashmo-ni-eeprom-3lch</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——FLASH模拟EEPROM&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.ARM仿真器/J-OBV2仿真器&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqhr95oo5oh7jep9l3s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqhr95oo5oh7jep9l3s8.png" alt="在这里插入图片描述" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、概述
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfwz61c7il962pj0zm3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfwz61c7il962pj0zm3.png" alt="在这里插入图片描述" width="800" height="154"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vqlwkatvxtsbezo1kli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vqlwkatvxtsbezo1kli.png" alt="在这里插入图片描述" width="800" height="141"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw6w2v5ph8k9j4k51uyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw6w2v5ph8k9j4k51uyi.png" alt="在这里插入图片描述" width="741" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、代码
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#define FLASH_PROG_ADDR         0x00004000
#define PAGE_BUFFER_SIZE    128
#define SECTOR_BUFFER_SIZE    512
&lt;/span&gt;&lt;span class="cm"&gt;/* Page大小为512字节 即128个字 */&lt;/span&gt;
&lt;span class="cm"&gt;/* 32位=32bit=4byte，1byte=4bit */&lt;/span&gt;
&lt;span class="cm"&gt;/* PageDataBuffer[128]数组有128个元素，每个元素占用4个byte，即4个字节 */&lt;/span&gt;
&lt;span class="cm"&gt;/* 1byte占用8位 */&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PAGE_BUFFER_SIZE&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="cm"&gt;/* Sector大小为2048字节 即512个字 */&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;SectorDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;SECTOR_BUFFER_SIZE&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;ReadData&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;FlashRW&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_FLASH_PageErase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FLASH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;memset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x55&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PAGE_BUFFER_SIZE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;FL_FLASH_Program_Word&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FLASH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;ReadData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="c1"&gt;//将flash数据读出&lt;/span&gt;

&lt;span class="c1"&gt;//    FL_FLASH_PageErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="c1"&gt;//    memset(PageDataBuffer, 0xAA, PAGE_BUFFER_SIZE * 4);&lt;/span&gt;
&lt;span class="c1"&gt;//    FL_FLASH_Program_Page(FLASH, FLASH_PROG_ADDR / FL_FLASH_PGAE_SIZE_BYTE, PageDataBuffer);&lt;/span&gt;
&lt;span class="c1"&gt;//    ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出&lt;/span&gt;

&lt;span class="c1"&gt;//    FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="c1"&gt;//    memset(SectorDataBuffer, 0x00, SECTOR_BUFFER_SIZE * 4);&lt;/span&gt;
&lt;span class="c1"&gt;//    FL_FLASH_Program_Sector(FLASH, FLASH_PROG_ADDR / FL_FLASH_SECTOR_SIZE_BYTE, SectorDataBuffer);&lt;/span&gt;
&lt;span class="c1"&gt;//    ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出&lt;/span&gt;

    &lt;span class="c1"&gt;//FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  三、实验
&lt;/h1&gt;

&lt;p&gt;写两个字节，0x55，掉电后重新上电，仍然是2个字节的0x55&lt;br&gt;
这里的地址和芯片手册没有对上，芯片手册是0x00040000，试了一下没有成功&lt;br&gt;
反而是0x00004000是可以的 &lt;br&gt;
&lt;strong&gt;后续我在bootswap章节中看到了对于IF3的描述是最低word 00004000地址和实验结论相符&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrerxuunck5w99ycdujm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrerxuunck5w99ycdujm.png" alt="在这里插入图片描述" width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
用连续写word的方式，写入8个Word，即4个byte，4个字节，32个bit&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falkshktpl6en0eq4qlee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falkshktpl6en0eq4qlee.png" alt="在这里插入图片描述" width="800" height="353"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7xya7cqbkx1po9k2ptu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7xya7cqbkx1po9k2ptu.png" alt="在这里插入图片描述" width="800" height="110"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feopdpjxtzue58dj0j2tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feopdpjxtzue58dj0j2tw.png" alt="在这里插入图片描述" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  四、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/qq_42681425/article/details/141759589" rel="noopener noreferrer"&gt;【C语言】十六进制、二进制、字节、位、指针、数组&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——FLASH模拟EEPROM，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——FLASH模拟EEPROM</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 08:04:54 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-flashmo-ni-eeprom-518k</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-flashmo-ni-eeprom-518k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——FLASH模拟EEPROM&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.ARM仿真器/J-OBV2仿真器&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqhr95oo5oh7jep9l3s8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frqhr95oo5oh7jep9l3s8.png" alt="在这里插入图片描述" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、概述
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfwz61c7il962pj0zm3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gfwz61c7il962pj0zm3.png" alt="在这里插入图片描述" width="800" height="154"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vqlwkatvxtsbezo1kli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vqlwkatvxtsbezo1kli.png" alt="在这里插入图片描述" width="800" height="141"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw6w2v5ph8k9j4k51uyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw6w2v5ph8k9j4k51uyi.png" alt="在这里插入图片描述" width="741" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、代码
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#define FLASH_PROG_ADDR         0x00004000
#define PAGE_BUFFER_SIZE    128
#define SECTOR_BUFFER_SIZE    512
&lt;/span&gt;&lt;span class="cm"&gt;/* Page大小为512字节 即128个字 */&lt;/span&gt;
&lt;span class="cm"&gt;/* 32位=32bit=4byte，1byte=4bit */&lt;/span&gt;
&lt;span class="cm"&gt;/* PageDataBuffer[128]数组有128个元素，每个元素占用4个byte，即4个字节 */&lt;/span&gt;
&lt;span class="cm"&gt;/* 1byte占用8位 */&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;PAGE_BUFFER_SIZE&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="cm"&gt;/* Sector大小为2048字节 即512个字 */&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;SectorDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;SECTOR_BUFFER_SIZE&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="n"&gt;ReadData&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;FlashRW&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_FLASH_PageErase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FLASH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;memset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mh"&gt;0x55&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PAGE_BUFFER_SIZE&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;FL_FLASH_Program_Word&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;FLASH&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;PageDataBuffer&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;ReadData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="kt"&gt;uint32_t&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="n"&gt;FLASH_PROG_ADDR&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="c1"&gt;//将flash数据读出&lt;/span&gt;

&lt;span class="c1"&gt;//    FL_FLASH_PageErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="c1"&gt;//    memset(PageDataBuffer, 0xAA, PAGE_BUFFER_SIZE * 4);&lt;/span&gt;
&lt;span class="c1"&gt;//    FL_FLASH_Program_Page(FLASH, FLASH_PROG_ADDR / FL_FLASH_PGAE_SIZE_BYTE, PageDataBuffer);&lt;/span&gt;
&lt;span class="c1"&gt;//    ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出&lt;/span&gt;

&lt;span class="c1"&gt;//    FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="c1"&gt;//    memset(SectorDataBuffer, 0x00, SECTOR_BUFFER_SIZE * 4);&lt;/span&gt;
&lt;span class="c1"&gt;//    FL_FLASH_Program_Sector(FLASH, FLASH_PROG_ADDR / FL_FLASH_SECTOR_SIZE_BYTE, SectorDataBuffer);&lt;/span&gt;
&lt;span class="c1"&gt;//    ReadData = *((uint32_t *)FLASH_PROG_ADDR);//将flash数据读出&lt;/span&gt;

    &lt;span class="c1"&gt;//FL_FLASH_SectorErase(FLASH, FLASH_PROG_ADDR);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  三、实验
&lt;/h1&gt;

&lt;p&gt;写两个字节，0x55，掉电后重新上电，仍然是2个字节的0x55&lt;br&gt;
这里的地址和芯片手册没有对上，芯片手册是0x00040000，试了一下没有成功&lt;br&gt;
反而是0x00004000是可以的 &lt;br&gt;
&lt;strong&gt;后续我在bootswap章节中看到了对于IF3的描述是最低word 00004000地址和实验结论相符&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrerxuunck5w99ycdujm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftrerxuunck5w99ycdujm.png" alt="在这里插入图片描述" width="800" height="315"&gt;&lt;/a&gt;&lt;br&gt;
用连续写word的方式，写入8个Word，即4个byte，4个字节，32个bit&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falkshktpl6en0eq4qlee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Falkshktpl6en0eq4qlee.png" alt="在这里插入图片描述" width="800" height="353"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7xya7cqbkx1po9k2ptu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg7xya7cqbkx1po9k2ptu.png" alt="在这里插入图片描述" width="800" height="110"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feopdpjxtzue58dj0j2tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feopdpjxtzue58dj0j2tw.png" alt="在这里插入图片描述" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  四、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/qq_42681425/article/details/141759589" rel="noopener noreferrer"&gt;【C语言】十六进制、二进制、字节、位、指针、数组&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——FLASH模拟EEPROM，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】FM33LF015芯片——PWM输出</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 08:04:20 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-pwmshu-chu-57dl</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-fm33lf015xin-pian-pwmshu-chu-57dl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】FM33LF015芯片——PWM输出&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.ARM仿真器/J-OBV2仿真器&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、接线
&lt;/h1&gt;

&lt;p&gt;VCC——3.3&lt;br&gt;
GND——GND&lt;br&gt;
SWDIO——SWDIO&lt;br&gt;
SWCLK——SWCLK&lt;/p&gt;

&lt;h1&gt;
  
  
  二、32 位低功耗定时器（LPTIM32）
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fay7v461sulfbz6sooeoa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fay7v461sulfbz6sooeoa.png" alt="在这里插入图片描述" width="800" height="595"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0l16fnkye04yettjiga.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc0l16fnkye04yettjiga.png" alt="在这里插入图片描述" width="800" height="492"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tlkpsv6lkgihcmdozre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5tlkpsv6lkgihcmdozre.png" alt="在这里插入图片描述" width="651" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、代码
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;
&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;"mf_config.h"&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="cm"&gt;/**
  * @brief  LPTIM32_TimerBase Initialization function
  * @param  void
  * @retval None
  */&lt;/span&gt;
    &lt;span class="cm"&gt;/* 占空比：CRR/ARR=1-500/1000=50% */&lt;/span&gt;
    &lt;span class="cm"&gt;/* PWM周期：ARR*PSC/PCLK=1000*8/8M=0.001s=1ms */&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;MF_LPTIM32_TimerBase_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_LPTIM32_InitTypeDef&lt;/span&gt;    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clockSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_CMU_LPTIM32_CLK_SOURCE_APBCLK&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prescalerClockSource&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_CLK_SOURCE_INTERNAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="cm"&gt;/* PSC=8 */&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prescaler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_PSC_DIV8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="c1"&gt;//FL_LPTIM32_PSC_DIV8&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;autoReload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;999&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_OPERATION_MODE_NORMAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;onePulseMode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_ONE_PULSE_MODE_CONTINUOUS&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;triggerEdge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_ETR_TRIGGER_EDGE_RISING&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;countEdge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_ETR_COUNT_EDGE_RISING&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;FL_LPTIM32_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LPTIM32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;TimerBase_InitStruct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
  * @brief  LPTIM32_Channel1 Initialization function
  * @param  void
  * @retval None
  */&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;MF_LPTIM32_Channel1_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_GPIO_InitTypeDef&lt;/span&gt;    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;FL_LPTIM32_OC_InitTypeDef&lt;/span&gt;    &lt;span class="n"&gt;LPTIM32_InitStruct&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_GPIO_PIN_8&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_GPIO_MODE_DIGITAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;outputType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_GPIO_OUTPUT_PUSHPULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pull&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_DISABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;remapPin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_ENABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;analogSwitch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_DISABLE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;FL_GPIO_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;GPIOA&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;GPIO_InitStruct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;LPTIM32_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compareValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;799&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="c1"&gt;//499&lt;/span&gt;
    &lt;span class="n"&gt;LPTIM32_InitStruct&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OCPolarity&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_OC_POLARITY_NORMAL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="n"&gt;FL_LPTIM32_OC_Init&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LPTIM32&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;FL_LPTIM32_CHANNEL_1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;LPTIM32_InitStruct&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;LPTIM32_Setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;FL_LPTIM32_Enable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LPTIM32&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;LPTIM32_Loop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  四、PWM周期、占空比理论计算
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/* 占空比：1-CRR/ARR=1-500/1000=50% &lt;em&gt;/&lt;br&gt;
/&lt;/em&gt; PWM周期：ARR*PSC/PCLK=1000*8/8M=0.001s=1ms */&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  五、实验&lt;br&gt;
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;1ms20%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl42wf0kq3geb82oluy90.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl42wf0kq3geb82oluy90.jpeg" alt="在这里插入图片描述" width="800" height="600"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjbhgbbjnr4zj4uahc45.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjbhgbbjnr4zj4uahc45.jpeg" alt="在这里插入图片描述" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1ms50%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuzfirnn4382phtgsp1r.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpuzfirnn4382phtgsp1r.jpeg" alt="在这里插入图片描述" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;2ms 50%&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsde89hw4pq4yd67w70s.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsde89hw4pq4yd67w70s.jpeg" alt="在这里插入图片描述" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  六、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/as480133937/article/details/103439546?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522e249aaae2ec6083a8b940865288a0e4b%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=e249aaae2ec6083a8b940865288a0e4b&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-103439546-null-null.nonecase&amp;amp;utm_term=PWM%E5%8D%A0%E7%A9%BA%E6%AF%94&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;PWM原理 PWM频率与占空比详解&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/wuyuzun/article/details/83900142?ops_request_misc=%257B%2522request%255Fid%2522%253A%252274ff8bad5a9ca4bda652ad2a29671145%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=74ff8bad5a9ca4bda652ad2a29671145&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-83900142-null-null.nonecase&amp;amp;utm_term=PWM%E5%91%A8%E6%9C%9F%E8%AE%A1%E7%AE%97%E5%85%AC%E5%BC%8F&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;STM32 PWM占空比和信号周期的控制因素分析&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】FM33LF015芯片——PWM输出，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【C语言】程序性能优化——代码优化</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 07:52:21 +0000</pubDate>
      <link>https://dev.to/kisorge/cyu-yan-cheng-xu-xing-neng-you-hua-dai-ma-you-hua-jdl</link>
      <guid>https://dev.to/kisorge/cyu-yan-cheng-xu-xing-neng-you-hua-dai-ma-you-hua-jdl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【C语言】程序性能优化——代码书写规范&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.编译器：DEVC&lt;br&gt;
2.&lt;a href="https://download.csdn.net/download/qq_42681425/89702410" rel="noopener noreferrer"&gt;C Primer Plus 第六版-1&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、Const
&lt;/h1&gt;

&lt;h1&gt;
  
  
  二、if(0==x)
&lt;/h1&gt;

&lt;h1&gt;
  
  
  三、define 函数体 函数内容
&lt;/h1&gt;

&lt;h1&gt;
  
  
  四、volatile
&lt;/h1&gt;

&lt;h1&gt;
  
  
  五、参考文献
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/weixin_67336587/article/details/125053893?ops_request_misc=%257B%2522request%255Fid%2522%253A%252278cc697aa9e757cad4b4f5f20b34ee09%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=78cc697aa9e757cad4b4f5f20b34ee09&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-17-125053893-null-null.nonecase&amp;amp;utm_term=c%E8%AF%AD%E8%A8%80%E4%BC%98%E5%8C%96&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;C语言代码优化11种实用方法&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/embeddedsoft/article/details/1351326?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-0-1351326-blog-1617768.235%5Ev43%5Econtrol&amp;amp;spm=1001.2101.3001.4242.1&amp;amp;utm_relevant_index=3" rel="noopener noreferrer"&gt;优化C代码常用的几招&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/qwent/article/details/1617768?ops_request_misc=%257B%2522request%255Fid%2522%253A%25228d72628dcb731173dbc7a4c2ce5c7152%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=8d72628dcb731173dbc7a4c2ce5c7152&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-1617768-null-null.nonecase&amp;amp;utm_term=c%E8%AF%AD%E8%A8%80%E4%BC%98%E5%8C%96&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;C代码优化方案&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/Goforyouqp/article/details/131591869?ops_request_misc=%257B%2522request%255Fid%2522%253A%252261d05c060da512b46e213571b44c175f%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=61d05c060da512b46e213571b44c175f&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-2-131591869-null-null.nonecase&amp;amp;utm_term=c%E8%AF%AD%E8%A8%80%E8%81%94%E5%90%88%E4%BD%93%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【C语言】编织程序的艺术：联合体、结构体和枚举的优雅妙用&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/lin_duo/article/details/98762594?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220275b07089ac6aa2b06412b8cd663656%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=0275b07089ac6aa2b06412b8cd663656&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-4-98762594-null-null.nonecase&amp;amp;utm_term=c%E8%AF%AD%E8%A8%80volatile%E4%BD%BF%E7%94%A8&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;C语言 volatile的作用与使用场景&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/weixin_44718794/article/details/103614338?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220059f6522f63759160e11c4adea8f876%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=0059f6522f63759160e11c4adea8f876&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-103614338-null-null.nonecase&amp;amp;utm_term=C%E8%AF%AD%E8%A8%80%20const%20%20%E6%95%B0%E7%BB%84%E5%86%85%E5%AE%B9&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;C语言-多维数组，const数组&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/samdy1990/article/details/38926523?ops_request_misc=%257B%2522request%255Fid%2522%253A%252200ec949f1fdf1216aa58476d779cfa3d%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=00ec949f1fdf1216aa58476d779cfa3d&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-38926523-null-null.nonecase&amp;amp;utm_term=if%280==x%29&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;逻辑运算0==x和x==0详解&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/weixin_39657978/article/details/120747654?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522fb562f4a6f11a908ae2ec4b0a92729e7%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=fb562f4a6f11a908ae2ec4b0a92729e7&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-5-120747654-null-null.nonecase&amp;amp;utm_term=#define%20%E5%87%BD%E6%95%B0%E4%BD%93&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;#define 定义函数&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【C语言】fscanf 和 fprintf函数验证，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【C语言】代码BUG排查方式</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 07:51:55 +0000</pubDate>
      <link>https://dev.to/kisorge/cyu-yan-dai-ma-bugpai-cha-fang-shi-4kkd</link>
      <guid>https://dev.to/kisorge/cyu-yan-dai-ma-bugpai-cha-fang-shi-4kkd</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【C语言】代码BUG排查方式&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.ARM仿真器/J-OBV2仿真器&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、BUG复现
&lt;/h1&gt;

&lt;p&gt;当测试工程师或客户输入BUG后，核对代码版本，核对测试LOG，有问题可以多复现，确保百分百复现问题&lt;/p&gt;

&lt;h1&gt;
  
  
  二、printf
&lt;/h1&gt;

&lt;p&gt;代码执行路径，编译一次，可以看出代码都在哪里执行&lt;/p&gt;

&lt;h1&gt;
  
  
  三、仿真器断点调试
&lt;/h1&gt;

&lt;p&gt;DEBUG断点&lt;/p&gt;

&lt;h2&gt;
  
  
  1.清除所有断点
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvycosxg2ldd9hkafbdc4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvycosxg2ldd9hkafbdc4.png" alt="在这里插入图片描述" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.进入调试模式
&lt;/h2&gt;

&lt;p&gt;在调试模式中，黄色标志表示代码执行位置，现在在时钟初始化，没有继续往下运行&lt;br&gt;
因此在while1中的串口打印也就没有执行，数据无法收发&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y2971a4h2yhchhw2imi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3y2971a4h2yhchhw2imi.png" alt="在这里插入图片描述" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3.打断点，执行
&lt;/h2&gt;

&lt;p&gt;断点打在58行，代码执行到58行，无法执行59行，无法打印数据&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffilh55m3rkdvmghwm5vt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffilh55m3rkdvmghwm5vt.png" alt="在这里插入图片描述" width="800" height="318"&gt;&lt;/a&gt;&lt;br&gt;
断点打在59行，代码执行到59行，打印一次数据后停止&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxaa2ljz5nu6pcq2z43p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnxaa2ljz5nu6pcq2z43p.png" alt="在这里插入图片描述" width="800" height="320"&gt;&lt;/a&gt;&lt;br&gt;
打红色圆点表示断点，&lt;br&gt;
黄色标志表示代码执行到此处&lt;br&gt;
蓝色标志表示查阅代码到此处&lt;/p&gt;

&lt;h1&gt;
  
  
  四、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/litchi_3/article/details/129925074?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f0be0976b4f0bc1d40e22aee65f1b0c8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=f0be0976b4f0bc1d40e22aee65f1b0c8&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-129925074-null-null.nonecase&amp;amp;utm_term=KEIL%20%E4%BB%BF%E7%9C%9Fprintf&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;KEIL仿真时使用printf函数打印调试信息&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/weixin_49941024/article/details/133680203?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522c2b429262a4de0ae432a6ac50bab5c6d%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=c2b429262a4de0ae432a6ac50bab5c6d&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-133680203-null-null.nonecase&amp;amp;utm_term=KEIL%20%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E4%BB%A3%E7%A0%81%E5%A4%A7%E5%B0%8F%20flash%20%20ram&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【Keil编译后查看ram和flash大小及占比】&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/u011011827/article/details/119136359?ops_request_misc=%257B%2522request%255Fid%2522%253A%252275e723660ef65ea22aa6547002fee193%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=75e723660ef65ea22aa6547002fee193&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-119136359-null-null.nonecase&amp;amp;utm_term=keil%E9%87%8C%E7%9A%84printf&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;keil 下如何使用printf&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/weixin_46672094/article/details/121618950?ops_request_misc=%257B%2522request%255Fid%2522%253A%252275e723660ef65ea22aa6547002fee193%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=75e723660ef65ea22aa6547002fee193&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-3-121618950-null-null.nonecase&amp;amp;utm_term=keil%E9%87%8C%E7%9A%84printf&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;printf()输出格式详解（Keil C51 、标准C）&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/ybhuangfugui/article/details/51706145?ops_request_misc=&amp;amp;request_id=&amp;amp;biz_id=102&amp;amp;utm_term=keil%E9%87%8C%E7%9A%84DEBUG%E6%96%AD%E7%82%B9%E7%9C%8B%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%88%B0%E5%93%AA%E9%87%8C&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-2-51706145.nonecase&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;Keil（MDK-ARM）系列教程（八）_在线调试（Ⅰ）&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/Yin_w/article/details/132086028?ops_request_misc=%257B%2522request%255Fid%2522%253A%252262dd7b0d726f3d74770dbcadc40d26cf%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=62dd7b0d726f3d74770dbcadc40d26cf&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduend~default-1-132086028-null-null.nonecase&amp;amp;utm_term=bp%20could%20not%20eb%20set&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;STM32F*/GD32F*在线调试打断点出现 BP could not be set....Probably too many Breakpoints defined?解决办法&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/woshi_ziyu/article/details/80642665?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522f0b12be7154bd5c0785fba7b50076060%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=f0b12be7154bd5c0785fba7b50076060&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-80642665-null-null.nonecase&amp;amp;utm_term=encountered%20an%20improper%20argume&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;“Error: Encountered an improper argument”的解决方法&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/2301_77540313/article/details/142523143?ops_request_misc=&amp;amp;request_id=&amp;amp;biz_id=102&amp;amp;utm_term=KEIL%E6%89%93%E6%96%AD%E7%82%B9%E6%80%8E%E4%B9%88%E7%9C%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%B2%A1%E6%9C%89&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-0-142523143.nonecase&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;keil的debug功能&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【C语言】代码BUG排查方式，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【C语言】指针数组、数组指针、函数指针、指针函数、函数指针数组、回调函数</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 07:38:39 +0000</pubDate>
      <link>https://dev.to/kisorge/cyu-yan-zhi-zhen-shu-zu-shu-zu-zhi-zhen-han-shu-zhi-zhen-zhi-zhen-han-shu-han-shu-zhi-zhen-shu-zu-hui-diao-han-shu-1nb1</link>
      <guid>https://dev.to/kisorge/cyu-yan-zhi-zhen-shu-zu-shu-zu-zhi-zhen-han-shu-zhi-zhen-zhi-zhen-han-shu-han-shu-zhi-zhen-shu-zu-hui-diao-han-shu-1nb1</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【C语言】函数指针与指针函数&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;br&gt;
1.DEVC++&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、指针数组
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;优先级关系：( ) &amp;gt; [ ] &amp;gt; *。&lt;br&gt;
 char *p[4]是个数组，那就要干数组的活。指针数组的意思就是，这个数组里面的元素都是指针。指针的类型是char ，指向的内容也是char 型。&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="cm"&gt;/* run this program using the console pauser or add your own getch, system("pause") or input loop */&lt;/span&gt;
&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt; 
&lt;span class="cm"&gt;/*           声明一个指针数组            */&lt;/span&gt;
&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sc"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sc"&gt;'\0'&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;  &lt;span class="c1"&gt;// 使用字符初始化&lt;/span&gt;
    &lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;  &lt;span class="c1"&gt;// 示例：只初始化第一个指针&lt;/span&gt;
    &lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"*point_array[0] = %d, *point_array[1] = %d, *point_array[2]= %d, *point_array[3] = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
        &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;point_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"array[0] = %d, array[1] = %d, array[2] = %d, array[3]= %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
        &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"pause"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzdng3g22mcuzvadqzyn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpzdng3g22mcuzvadqzyn.png" alt="在这里插入图片描述" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、数组指针
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="cm"&gt;/* run this program using the console pauser or add your own getch, system("pause") or input loop */&lt;/span&gt;
&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt; 
&lt;span class="cm"&gt;/*           声明一个数组指针            */&lt;/span&gt;
&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array_point&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;}};&lt;/span&gt;
    &lt;span class="n"&gt;array_point&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"*array_point[0]= %d, *array_point[1]= %d, *array_point[2] = %d, *array_point[3]= %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
        &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array_point&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array_point&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array_point&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array_point&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"*array[0] = %d, *array[1] = %d, *array[2] = %d, *array[3] = %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;\
        &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"pause"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w1x49vf3b5qwqslfspu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w1x49vf3b5qwqslfspu.png" alt="在这里插入图片描述" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、函数指针
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;// 相加函数&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// 相减函数&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt; 
&lt;span class="cm"&gt;/*           声明一个函数指针            */&lt;/span&gt;
&lt;span class="cm"&gt;/*    1.指针指向的函数参数类型要相同      */&lt;/span&gt;
&lt;span class="cm"&gt;/*    2. 是一个指针，无需返回值           */&lt;/span&gt;
&lt;span class="cm"&gt;/*    3.可以不用声明变量，因为无需传参     */&lt;/span&gt;
&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;fun&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt; 

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fun&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;          &lt;span class="c1"&gt;//函数指针等价于add函数&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"相加：%d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fun&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;fun&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="err"&gt;函数指针等价于&lt;/span&gt;&lt;span class="n"&gt;subtract&lt;/span&gt;&lt;span class="err"&gt;函数&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"相减：%d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;fun&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="err"&gt;输出结果：&lt;/span&gt; &lt;span class="err"&gt;相加：&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
          &lt;span class="err"&gt;相减：&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  四、指针函数
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;// 相加函数&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// 相减函数&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt;
&lt;span class="cm"&gt;/*                     声明一个指针函数                       */&lt;/span&gt;
&lt;span class="cm"&gt;/*        1.fun没有被括起来,fun后面跟着括号可以进行传参         */&lt;/span&gt;
&lt;span class="cm"&gt;/*        如: int (*fun(int x))(int,int )                    */&lt;/span&gt;
&lt;span class="cm"&gt;/*        所以 *fun()为指针函数                               */&lt;/span&gt;
&lt;span class="cm"&gt;/*        2.int (int a,int b) 是指针返回的函数原型             */&lt;/span&gt;
&lt;span class="cm"&gt;/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;fun&lt;/span&gt;&lt;span class="p"&gt;())(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;fun_chose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;chose&lt;/span&gt;&lt;span class="p"&gt;))(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;chose&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;subtract&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fun&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"相加：%d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="n"&gt;operation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fun_chose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"相减：%d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;operation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="err"&gt;输出结果：&lt;/span&gt; &lt;span class="err"&gt;相加：&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;
          &lt;span class="err"&gt;相减：&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  五、函数指针数组
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt;&lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fun1&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"fun1:%s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fun2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"fun2:%s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;fun3&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"fun3:%s"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="cm"&gt;/*void(*pfun1)(const char *) = fun1;
    void(*pfun2)(const char *) = fun2;
    void(*pfun3)(const char *) = fun3;*/&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;function_ponit_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;])(&lt;/span&gt;&lt;span class="k"&gt;const&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;fun1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fun2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;fun3&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;function_ponit_array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;](&lt;/span&gt;&lt;span class="s"&gt;"hello world&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"pause&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2ivrkacbo1qbrfoyvqy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb2ivrkacbo1qbrfoyvqy.png" alt="在这里插入图片描述" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  六、回调函数
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;&lt;span class="cm"&gt;/* run this program using the console pauser or add your own getch, system("pause") or input loop */&lt;/span&gt;
&lt;span class="c1"&gt;// 定义回调函数类型&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="nf"&gt;void&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;CallbackType&lt;/span&gt;&lt;span class="p"&gt;)(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// 函数接受回调函数作为参数&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;performOperation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;CallbackType&lt;/span&gt; &lt;span class="n"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// 执行操作&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Performing operation with data: %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// 调用回调函数&lt;/span&gt;
    &lt;span class="n"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// 实现一个回调函数&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;callbackFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Callback function called with result: %d&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;argc&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;argv&lt;/span&gt;&lt;span class="p"&gt;[])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;performOperation&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;callbackFunction&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"pause"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnu68um1vrjqmxvsxh26.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqnu68um1vrjqmxvsxh26.png" alt="在这里插入图片描述" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  七、参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://blog.csdn.net/EleganceJiaBao/article/details/140268266?ops_request_misc=%257B%2522request%255Fid%2522%253A%252295f9c868f7c289ebc50c5cd25da6b6f7%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=95f9c868f7c289ebc50c5cd25da6b6f7&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_click~default-2-140268266-null-null.nonecase&amp;amp;utm_term=C%E8%AF%AD%E8%A8%80%E5%9B%9E%E8%B0%83%E5%87%BD%E6%95%B0&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【C语言】《回调函数》详细解析&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/ChaseRaod/article/details/55057993?ops_request_misc=&amp;amp;request_id=&amp;amp;biz_id=102&amp;amp;utm_term=C%E8%AF%AD%E8%A8%80%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88%E6%95%B0%E7%BB%84&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~sobaiduweb~default-3-55057993.nonecase&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;c语言：数组指针，指针数组，函数指针，函数指针数组，指向函数指针数组的指针&lt;/a&gt;&lt;a href="https://blog.csdn.net/qq_26226375/article/details/136259153?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522bba936534ef9d91ef8a7a3608956771d%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&amp;amp;request_id=bba936534ef9d91ef8a7a3608956771d&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-10-136259153-null-null.nonecase&amp;amp;utm_term=C%E8%AF%AD%E8%A8%80%E6%8C%87%E9%92%88%E6%95%B0%E7%BB%84&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;C语言-数组指针与指针数组&lt;/a&gt;&lt;br&gt;
&lt;a href="https://blog.csdn.net/huzhuohuan/article/details/134037470?ops_request_misc=%257B%2522request%255Fid%2522%253A%25227be0e62eddb7c979b556bcb714ec7a5c%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&amp;amp;request_id=7be0e62eddb7c979b556bcb714ec7a5c&amp;amp;biz_id=0&amp;amp;utm_medium=distribute.pc_search_result.none-task-blog-2~blog~top_positive~default-1-134037470-null-null.nonecase&amp;amp;utm_term=%E6%8C%87%E9%92%88%E5%87%BD%E6%95%B0%E5%92%8C%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88&amp;amp;spm=1018.2226.3001.4450" rel="noopener noreferrer"&gt;【C语言】 “函数指针”和“指针函数” 用法和详解（太细了！！！）菜鸟级教程&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【C语言】函数指针与指针函数，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】STC8H1K芯片——GPIO</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 07:37:51 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-stc8h1kxin-pian-gpio-3fo8</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-stc8h1kxin-pian-gpio-3fo8</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】STC8H1K芯片——GPIO&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5864z0mz81chp45iz0y2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5864z0mz81chp45iz0y2.png" alt="在这里插入图片描述" width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一.IO口配置
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frse9qzeqxluzccbjf85a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frse9qzeqxluzccbjf85a.png" alt="在这里插入图片描述" width="760" height="419"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0oeq4ecuqmc7xu8sm61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh0oeq4ecuqmc7xu8sm61.png" alt="在这里插入图片描述" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二.准双向口
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.简介
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8qkldnihpazj8v3mj1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj8qkldnihpazj8v3mj1i.png" alt="在这里插入图片描述" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35uglu0smpgomboerotp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35uglu0smpgomboerotp.png" alt="在这里插入图片描述" width="658" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.配置P20 P21 P22
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;    &lt;span class="n"&gt;P2n_standard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xf8&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;P3n_standard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xbf&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="n"&gt;P5n_standard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#define P2n_standard(bitn)  P2M1 &amp;amp;= ~(bitn),P2M0 &amp;amp;= ~(bitn)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;0xf8 是一个十六进制数，转换为二进制是 11111000。 &lt;br&gt;
 ~(0xf8) 是对 0xf8&lt;br&gt;
进行按位取反操作。按位取反会将二进制数中的每一位都翻转，即 1 变成 0，0 变成 1。因此，~(0xf8) 的结果是00000111（在8位二进制数的情况下，如果 P2M1 是一个更宽的寄存器或变量，则前面会填充更多的 0）。&lt;br&gt;
 P2M1 &amp;amp;=~(0xf8) 是将 P2M1 的当前值与 ~(0xf8) 的结果进行按位与操作。按位与操作会逐位比较两个数的对应位，如果两个位都是&lt;br&gt;
1，则结果位是 1；否则，结果位是 0。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;这个操作实际上是将 P2M1 的高5位清零（假设我们只考虑这8位，实际上可能更多），而保留低3位的值不变&lt;/strong&gt;。换句话说，它清除了 P2M1&lt;br&gt;
中对应于 0xf8（即 11111000）的位，而保留了其他位。&lt;/p&gt;

&lt;p&gt;配置P20 P21 P22&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddwcptic40sfg0tcuycy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddwcptic40sfg0tcuycy.png" alt="在这里插入图片描述" width="365" height="54"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhc4mzjdqbli2vpqxa692.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhc4mzjdqbli2vpqxa692.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3.配置P36
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwvrm0gkf7g3ci3qcpth.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwvrm0gkf7g3ci3qcpth.png" alt="在这里插入图片描述" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5txqzgwf3ijowdizimp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5txqzgwf3ijowdizimp.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4.配置P54
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30i3i70yr7hx36mhqd7q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30i3i70yr7hx36mhqd7q.png" alt="在这里插入图片描述" width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zy7d8nf1s4a2qora8rb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5zy7d8nf1s4a2qora8rb.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三.推免输出
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.简介
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1x4hl68wd08z0g48j2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu1x4hl68wd08z0g48j2s.png" alt="在这里插入图片描述" width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F373qm0pk65x53ynu9ndp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F373qm0pk65x53ynu9ndp.png" alt="在这里插入图片描述" width="475" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.配置P10,11,12,13,14,15
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;    &lt;span class="n"&gt;P1n_push_pull&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x3f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#define P1n_push_pull(bitn) P1M1 &amp;amp;= ~(bitn),P1M0 |= (bitn)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jgg5cai7kkiy7harges.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jgg5cai7kkiy7harges.png" alt="在这里插入图片描述" width="554" height="165"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2dacf8v8pjyiqik04mh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft2dacf8v8pjyiqik04mh.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  四.高阻输入
&lt;/h1&gt;

&lt;h2&gt;
  
  
  1.简介
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hhfegbq7bkh87cvdf3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4hhfegbq7bkh87cvdf3o.png" alt="在这里插入图片描述" width="713" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2sdgr3rk030tsyvp25m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe2sdgr3rk030tsyvp25m.png" alt="在这里插入图片描述" width="484" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2.配置P16,17
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;    &lt;span class="n"&gt;P1n_pure_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0xc0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;//设置为高阻输入&lt;/span&gt;
    &lt;span class="n"&gt;P0n_pure_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x0f&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;//设置为高阻输入&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3xacc26uwntpzlgxq9w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3xacc26uwntpzlgxq9w.png" alt="在这里插入图片描述" width="661" height="59"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzceynwd394bgql1o39tz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzceynwd394bgql1o39tz.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3.配置P36
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;    &lt;span class="n"&gt;P3n_pure_input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mh"&gt;0x40&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;//CMP-(P3.6)设置为高阻.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaz1j2fibinx88usp43b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaz1j2fibinx88usp43b.png" alt="在这里插入图片描述" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkpw1bp34b9jw1z9arbk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkpw1bp34b9jw1z9arbk2.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  五.开漏输出
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jt4ygz9dde6t0okgzuu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3jt4ygz9dde6t0okgzuu.png" alt="在这里插入图片描述" width="800" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7alg01avbcy2n5132vtd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7alg01avbcy2n5132vtd.png" alt="在这里插入图片描述" width="529" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  六.参考资料
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://download.csdn.net/download/qq_42681425/89971291" rel="noopener noreferrer"&gt;STC8H1K08-36I-TSSOP20-规格书.PDF&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】STC8H1K芯片——GPIO，评论区欢迎讨论。&lt;/p&gt;

</description>
    </item>
    <item>
      <title>【电机控制器】STC8H1K芯片——比较器</title>
      <dc:creator>kisorge</dc:creator>
      <pubDate>Fri, 28 Mar 2025 07:26:55 +0000</pubDate>
      <link>https://dev.to/kisorge/dian-ji-kong-zhi-qi-stc8h1kxin-pian-bi-jiao-qi-1ibb</link>
      <guid>https://dev.to/kisorge/dian-ji-kong-zhi-qi-stc8h1kxin-pian-bi-jiao-qi-1ibb</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;【电机控制器】STC8H1K芯片——比较器&lt;/p&gt;


&lt;h2&gt;
  
  
  @&lt;a href="https://dev.to%E6%96%87%E7%AB%A0%E7%9B%AE%E5%BD%95"&gt;TOC&lt;/a&gt;
&lt;/h2&gt;
&lt;h1&gt;
  
  
  前言
&lt;/h1&gt;

&lt;p&gt;使用工具：&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;code&gt;提示：以下是本篇文章正文内容，下面案例可供参考&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  一、比较器内部结构
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzf0mf4ndrl7aczqv2u3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftzf0mf4ndrl7aczqv2u3.png" alt="在这里插入图片描述" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  二、比较器控制寄存器CMPCR1
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;CMPCR1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mh"&gt;0x8C&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3jgxh4wfpmzyxespzvn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3jgxh4wfpmzyxespzvn.png" alt="在这里插入图片描述" width="800" height="561"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxw6b9rwulrek2yopgep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxw6b9rwulrek2yopgep.png" alt="在这里插入图片描述" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  三、比较器控制寄存器CMPCR2
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="n"&gt;CMPCR2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;            &lt;span class="c1"&gt;//60个时钟滤波   比较结果变化延时周期数, 0~63&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoqsbaw66swmikxzpvee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoqsbaw66swmikxzpvee.png" alt="在这里插入图片描述" width="402" height="667"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9rsqcp655mm6e8cmal6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn9rsqcp655mm6e8cmal6.png" alt="在这里插入图片描述" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  总结
&lt;/h1&gt;

&lt;p&gt;本文仅仅简单介绍了【电机控制器】STC8H1K芯片——比较器，评论区欢迎讨论。&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
