找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 894|回复: 2
打印 上一主题 下一主题
收起左侧

单片机新手例程序/STM32开门狗实验

[复制链接]
跳转到指定楼层
楼主
ID:549735 发表于 2019-5-28 22:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*  */

#include "public.h"
#define TXD GPIO_Pin_9
#define RXD GPIO_Pin_10

void GPIOINIT()           //???B?????
{
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=TXD;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable , ENABLE);

        GPIO_InitStructure.GPIO_Pin=RXD;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOA,&GPIO_InitStructure);        
}
void RCCINIT()         //?????????
{        
        SystemInit();
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);        //?????ù???????
}
void USARTINIT()
{
        USART_InitTypeDef USART_InitStructure;
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;
        USART_Init(USART1, &USART_InitStructure);

        USART_Cmd(USART1,ENABLE);
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
        USART_ClearFlag(USART1,USART_FLAG_TC);
}
void NVICINIT()
{
        NVIC_InitTypeDef NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);                        
}
void IWDGINIT()
{
        IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//?????????д????
        IWDG_SetPrescaler(IWDG_Prescaler_64);//????IWDG?????//40K/64=1.6ms
        IWDG_SetReload(800);//????IWDG??????  12λ???0~4095??//800*1.6ms=1.28s
        IWDG_ReloadCounter();//????IWDG?????????????????IWDG??????
        IWDG_Enable();//???IWDG
}
int fputc(int ch,FILE *p)
{
        USART_SendData(USART1,(u8)ch);
        while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
        return ch;
}
int main()
{
        RCCINIT();
        GPIOINIT();
        USARTINIT();
        NVICINIT();
        IWDGINIT();
        printf("??????????????\r\n");
        printf("88888888888\r\n");
        while(1)
        {
                IWDG_ReloadCounter();
                printf("????ι????\r\n");        
                delayms(500);                        
        }               
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:509721 发表于 2019-5-29 11:39 | 只看该作者
函数命名很不规范,delay是怎么实现的的,是for循环空转耗时这种方式实现的么,如果是,不建议这样,学会利用定时器来实现延时,郭天祥的延时耽误了几代人
回复

使用道具 举报

板凳
ID:549735 发表于 2019-5-29 23:26 | 只看该作者
andyf626 发表于 2019-5-29 11:39
函数命名很不规范,delay是怎么实现的的,是for循环空转耗时这种方式实现的么,如果是,不建议这样,学会利 ...

谢谢指教,延时方面确实不精
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表