打印
[通用PIC核OTP系列]

HC18P110L芯圣开发笔记(二)各种外设,PIN,button,pwm,ADC

[复制链接]
8562|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2021-6-16 10:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-20 14:53 编辑

WDT模块使用说明
     打开工程“SYD8821_SDK\Source Code\SYD8821\wdt\Keil”可以看到wdt的主函数如下:
void wdt_callback(void)
{
    dbg_printf("wdt_callback\r\n");
}
int main()
{   
    __disable_irq();
    //GPO
    pad_mux_write(LED4, 0);
    pad_mux_write(LED5, 0);
    pad_mux_write(LED6, 0);
    pad_mux_write(LED7, 0);
    gpo_config(LED4,1);
    gpo_config(LED5,1);
    gpo_config(LED6,1);
  gpo_config(LED7,1);  
    //GPI
    pad_mux_write(KEY1, 0);
    pad_mux_write(KEY2, 0);
    pad_mux_write(KEY3, 0);
    gpi_config(KEY1, PULL_UP);
    gpi_config(KEY2, PULL_UP);
    gpi_config(KEY3, PULL_UP);
  //uart 0
    pad_mux_write(20, 7);
    pad_mux_write(21, 7);
    dbg_init();
    dbg_printf("SYD8821 WDT TEST\r\n");

    // Select External XO
    sys_32k_clock_set(SYSTEM_32K_CLOCK_XO);

    wdt_set_crv(32768);  //1S
    wdt_set_RR_enable(WDT_RR_ALL);    //使能RR喂狗机制
    //wdt_set_reset_type(0);
    wdt_set_reset_type(WDT_RESET_ALL);    //设置看门狗定时器到来的行为是复位所有模块
    wdt_start(0);   //使能WDT,这里在使能的时候不喂狗

//    wdt_set_interrupt_callback(wdt_callback);    //开启WDT中断,注意:这里WDT的中断模式和复位模式只能够二选一,
//    wdt_int_enable();        //也就是说要产生中断必须设置复位类型为0wdt_set_reset_type(0);
    delay_ms(100);   //因为进入while(1)后就会立即喂狗,但是要求开启wdt后要延迟一段时间才能够喂狗 所以这里延时一段时间(100us以上)
    __enable_irq();
    while(1)
    {
        gpo_toggle(LED4);
        if(gpi_get_val(KEY1)){
            wdt_reset_counter();    //喂狗
              gpo_toggle(LED5);
        }
        if(!gpi_get_val(KEY2)){
            wdt_stop();    //关掉看门狗
              gpo_toggle(LED6);
        }
    delay_ms(100);
    }        
}


使用特权

评论回复
沙发
jcky001|  楼主 | 2021-6-16 10:12 | 只看该作者

改工程在运行后不按下任何按键默认喂狗,不会复位。按下相应按键后会进行相应的流程:

按下KEY1:程序不进行喂狗  看门狗将在一段时间后复位MCU

按下KEY2:程序停止看门狗,看门狗将被关闭


使用特权

评论回复
板凳
jcky001|  楼主 | 2021-6-16 10:13 | 只看该作者

如果长按KEY1,可在串口上看到如下波形:

如果设置超时时间为2s,也就是wdt_set_crv(32768*2);,长按KEY1,可在串口上看到如下波形:


使用特权

评论回复
地板
jcky001|  楼主 | 2021-6-16 10:14 | 只看该作者

如果设置超时时间为10s,也就是wdt_set_crv(32768*10);,长按KEY1,可在串口上看到如下波形:


使用特权

评论回复
5
jcky001|  楼主 | 2021-6-16 10:15 | 只看该作者
WDT中断的使用

    按照上面例程的说明,可以把wdt的初始化配置成这样:

    // Select External XO
    sys_32k_clock_set(SYSTEM_32K_CLOCK_XO);

    wdt_set_crv(32768);  //1S
    wdt_set_RR_enable(WDT_RR_ALL);
    wdt_set_reset_type(0);
    //wdt_set_reset_type(WDT_RESET_ALL);
    wdt_start(0);

    wdt_set_interrupt_callback(wdt_callback);
    wdt_int_enable();

    这时候如果按住key1,停止喂狗,等待看门狗超时后将进入wdt_callback中断服务函数,其源码如下:

void wdt_callback(void)
{
  dbg_printf("wdt_callback\r\n");
  pmu_system_reset();
}

    这时候会打印"wdt_callback\r\n"并且会进入复位流程,wdt中断的功能是能够在看门狗复位之前能够处理一些保存数据的事情。

   一直按住key1不放,可以在串口看到这样的打印:



    可以看到打印“wdt_callback”之后就复位了!

    这里上传本博客代码(工程在:\SYD8821_SDK\Source Code\SYD8821_other\wdt_IRQ\Keil):https://download.csdn.net/download/chengdong1314/10357406



WDT复位类型
    在WDT初始化有配置复位类型的语句:  wdt_set_reset_type(WDT_RESET_ALL);    //设置看门狗定时器到来的行为是复位所有模块

    其中WDT_RESET_ALL属于如下枚举类型:

enum {
    WDT_RESET_MCU = 1,    //单纯的复位MCU
    WDT_RESET_SYSTEM = 2,//是把GPIO,TIMER,RTC,pem_led,watchdog都复位掉
    WDT_RESET_ALL = 3,

};

    注意:这里在WDT_RESET_MCU模式下只是复位MCU,而GPIO,TIMER,RTC,pem_led,watchdog这些外设是没有被复位掉的,而KEIL的仿真复位相当于RESET_MCU


使用特权

评论回复
6
kkzz| | 2021-7-1 20:40 | 只看该作者
这个库函数是集成的吗  

使用特权

评论回复
7
hudi008| | 2021-7-1 20:50 | 只看该作者
HC18P110L兼容哪个芯片?

使用特权

评论回复
8
lzmm| | 2021-7-1 20:50 | 只看该作者
              

使用特权

评论回复
9
minzisc| | 2021-7-1 20:50 | 只看该作者
资料包在哪里下载呢   

使用特权

评论回复
10
selongli| | 2021-7-1 20:51 | 只看该作者
HC18P110L芯圣开发笔记                  

使用特权

评论回复
11
fentianyou| | 2021-7-1 20:51 | 只看该作者
这个是看门狗的函数吗   

使用特权

评论回复
12
xiaoyaodz| | 2021-7-1 20:51 | 只看该作者
pwm可以产生几种模式   

使用特权

评论回复
13
febgxu| | 2021-7-1 20:52 | 只看该作者
使用的是什么开发环境呢      

使用特权

评论回复
14
sdlls| | 2021-7-1 20:52 | 只看该作者
HC18P110L是32位的芯片吗  

使用特权

评论回复
15
pixhw| | 2021-7-1 20:53 | 只看该作者
jcky001 发表于 2021-6-16 10:12
改工程在运行后不按下任何按键默认喂狗,不会复位。按下相应按键后会进行相应的流程:按下KEY1:程序不进行 ...

这个是官网的板子吗

使用特权

评论回复
16
fentianyou| | 2021-7-1 20:53 | 只看该作者
源代码在哪里        

使用特权

评论回复
17
selongli| | 2021-7-1 20:53 | 只看该作者
PIN,button,pwm,ADC的驱动代码呢  

使用特权

评论回复
18
minzisc| | 2021-7-1 20:53 | 只看该作者
说明文档有吗   

使用特权

评论回复
19
lzmm| | 2021-7-1 20:53 | 只看该作者
谢谢喽分享的资料了。   

使用特权

评论回复
20
hudi008| | 2021-7-1 20:53 | 只看该作者
有完整的工程文件吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1504

主题

4513

帖子

6

粉丝