jennyzhaojie 发表于 2021-1-25 00:15

【RISC-V MCU CH32V103测评】LED灯交替闪烁

本帖最后由 jennyzhaojie 于 2021-1-26 00:20 编辑

<p>板载的仅有外设资源要数LED灯了,其电路原理图如图1所示,那我们就用好它吧。</p>

<p></p>

<p>图1 LED电路原理图</p>

<p>其实使用LED灯的主要目的就是学习I/O的使用,值得点赞的是这2个LED灯是不占固定资源的,也就是说用到哪里连哪里。</p>

<p>那如何该如何实现LED灯的交替闪烁呢?</p>

<p>思路就是:</p>

<p>1)将2个I/O口设为输出,并使其与2个LED灯相连,这里用PA0控制LED1, 用PA1控制LED2;</p>

<p>2)使用变量i和j来控制高低电平的输出,并使2个I/O的高低电平输出在时间上错开, 令i=0时PA0输出高电平的语句为GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET)),令j=1时PA0输出低电平的语句为GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));</p>

<p>3)使用延时函数按时对2个LED灯执行高低电平输出的状态切换,切换高低电平输出的语句为GPIO_WriteBit(GPIOx, GPIO_Pin_y, (z==0) ? (z=Bit_SET):(z=Bit_RESET)),延时函数为 Delay_Ms();</p>

<p>配置PA0和PA1为输出口的函数为:</p>

<pre>
<code class="language-cpp">void GPIO_Toggle_INIT(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &amp;GPIO_InitStructure);
}</code></pre>

<p>其主程序为:</p>

<pre>
<code class="language-cpp">int main(void)
{
      u8 i=0,j=1;
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Delay_Init();
      GPIO_Toggle_INIT();
    //GPIO_WriteBit(GPIOA, GPIO_Pin_0,Bit_SET);
    //GPIO_WriteBit(GPIOA, GPIO_Pin_1,Bit_RESET);
      while(1)
    {
            Delay_Ms(250);
            GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));
            GPIO_WriteBit(GPIOA, GPIO_Pin_1, (j==0) ? (j=Bit_SET):(j=Bit_RESET));
      }
}</code></pre>

<p>经编译,其编译结果如图2所示。</p>

<p></p>

<p>经下载,其运行效果如图3所示。</p>

<p></p>

<p>图3 运行效果</p>

kennyxuxu 发表于 2021-1-25 10:38

初学者很有用,这个资料真的很不多,可以学习到

jennyzhaojie 发表于 2021-1-25 13:55

kennyxuxu 发表于 2021-1-25 10:38
初学者很有用,这个资料真的很不多,可以学习到

<p>感谢支持</p>

freebsder 发表于 2021-1-25 22:27

<p>谢谢分享,点灯能学不少东西</p>

jennyzhaojie 发表于 2021-1-26 00:18

freebsder 发表于 2021-1-25 22:27
谢谢分享,点灯能学不少东西

<p>学习的起步点!</p>

w494143467 发表于 2021-1-26 21:41

<p>感谢分享,沁恒做的还是不错的!</p>

freebsder 发表于 2021-1-26 22:33

jennyzhaojie 发表于 2021-1-26 00:18
学习的起步点!

<p>就是板子太丑,就是个学生作品,完全没有其他开发板那种高大上的范</p>

jennyzhaojie 发表于 2021-1-27 00:32

w494143467 发表于 2021-1-26 21:41
感谢分享,沁恒做的还是不错的!

<p>外设再丰富些就更好了,哈哈。。。</p>

piazini 发表于 2023-1-28 16:34

代码只看懂了部分,但是感觉,运行后,灯会交替闪烁的比较快。
页: [1]
查看完整版本: 【RISC-V MCU CH32V103测评】LED灯交替闪烁