STM32里面的一些小函数——assert_param,PUTCHAR_PROTOTYPE
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32里面的一些小函数——assert_param,PUTCHAR_PROTOTYPE相关的知识,希望对你有一定的参考价值。
assert_param,可以在stm32f10x_conf.h找到原型,
#ifdef USE_FULL_ASSERT
#define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t*)__FILE__, __LINE__))
void assert_failed(uint8_t* file, uint32_t line);
#else
#define assert_param(expr) ((void)0)
#endif
宏定义语句,若定义USE_FULL_ASSERT,则执行下面的void assert_failed(uint8_t* file, uint32_t line);,反之则只执行assert_param(expr) ((void)0);
assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t*)__FILE__, __LINE__)):如果expr为真,即执行(void)0函数,如果expr为假,即执行后面的assert_failed函数,而assrt_failed函数在main下面可以找到
void assert_failed(u8* file, u32 line)
{ /* User can add his own implementation to report the file name and linenumber,
ex: printf("Wrong parameters value: file %s on line %d\r\n", file,line) */
/* Infinite loop */
while (1) { }
}
也就是说,可以用assert函数,来执行判断功能,assert(juge(min)),juge函数判断分钟,若小于60,assert函数执行(void)0,正常返回;反之则进入failed函数。
PUTCHAR_PROTOTYPE在main函数中可以找到原型,此处定义的是USART1,可以借助这个函数测试串口是否正常。
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (uint8_t) ch);
/* Loop until the end of transmission */
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
{}
return ch;
}
以上是关于STM32里面的一些小函数——assert_param,PUTCHAR_PROTOTYPE的主要内容,如果未能解决你的问题,请参考以下文章
想把VC++6.0后缀cpp文件的程序移植到stm32芯片里面去,需要注意哪些地方?
关于stm32建立工程的c语言问题 主函数里面包含了stm32f10x.h和led.h, led.