电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

stm32库函数(3.5)集总VIP免费

stm32库函数(3.5)集总_第1页
1/6
stm32库函数(3.5)集总_第2页
2/6
stm32库函数(3.5)集总_第3页
3/6
一、流水灯(1)定义和初始化GPIO管脚GPIO_InitTypeDefGPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化(2)库函数积累RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOF,ENABLE);//开启时钟(RCC_APB1PeriphClockCmd())GPIO_SetBits(GPIOB,GPIO_Pin_0);//设置为1GPIO_ResetBits(GPIOF,GPIO_Pin_7|GPIO_Pin_8);//设置为0(3)Leaning(a)输入宏#defineLED1(a)if(a)\GPIO_SetBits(GPIOB,GPIO_Pin_0);\else\GPIO_ResetBits(GPIOB,GPIO_Pin_0)(b)叠层嵌套#definedigitalHi(p,i){p->BSRR=i;}//设置为高电平#definedigitalLo(p,i){p->BRR=i;}//输出低电平#definedigitalToggle(p,i){p->ODR^=i;}//输出反转状态/*定义控制IO的宏*/#defineLED1_TOGGLEdigitalToggle(GPIOB,GPIO_Pin_0)#defineLED1_OFFdigitalHi(GPIOB,GPIO_Pin_0)#defineLED1_ONdigitalLo(GPIOB,GPIO_Pin_0)二、Polling(1)库函数积累GPIO_WriteBit(GPIOC,GPIO_Pin_3,(BitAction)((1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_3))));//取反或者写入设置某个io口的高低GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3);//读取io口输入电平GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_3);//读取io口输出电平三、EXTI-按键(1)初始化中断EXTI_InitTypeDefEXTI_InitStructure;GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);EXTI_InitStructure.EXTI_Line=EXTI_Line0;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿中断EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);/**************配置nvic和中断组********************/NVIC_InitTypeDefNVIC_InitStructure/*Configureonebitforpreemptionpriority*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择组/*配置中断源*/NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);(2)库函数积累EXTI_GetITStatus(EXTI_Line0)!=RESET//获取中断标志位EXTI_ClearITPendingBit(EXTI_Line0);//清除中断标志(3)Leaning(a)CLI();//#defineCLI()__set_PRIMASK(1)(来自core.cm3.h)/*关闭总中断*/(b)SEI();//#defineSEI()__set_PRIMASK(0)/*开放总中断*/(c)写中断函数时,要注意中断名字要和中断向量表一致,如下绿字部分voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET)//确保是否产生了EXTILine中断{//LED1取反LED1_TOGGLE;EXTI_ClearITPendingBit(EXTI_Line0);//清除中断标志位}}(4)Watch-Out四、系统滴答时钟(1)系统滴答时钟结构体SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;//SysTick为一结构体(2)库函数积累SysTick_Config(SystemCoreClock/100000);//来自内核层的通用函数(3)Leaning位指示宏和位屏蔽宏(4)Watch-Out五、串口(1)串口初始化USART_InitStructure.USART_BaudRate=115200;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowContro=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);USART_Cmd(USART1,ENABLE);//使用外设必须使能外设(2)库函数积累USART_SendData(USART1,(uint8_t)ch);USART_GetFlagStatus(USART1,USART_FLAG_TC);USART_ReceiveData(USART1);(3)Leaning///重定向c库函数printf到USART1intfputc(intch,FILE*f){/*发送一个字节数据到USART1*/USART_SendData(USART1,(uint8_t)ch);/*等待发送完毕*/while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);return(ch);}///重定向c库函数scanf到USART1intfgetc(FILE*f){/*等待串口1输入数据*/while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);return(int)USART_ReceiveData(USART1);}

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

stm32库函数(3.5)集总

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部