当前位置: 首页 > news >正文

简述网站建设的基本流程奥迪网站建设策划书

简述网站建设的基本流程,奥迪网站建设策划书,超级工程网站建设,ppt模板网站开发第一种方法#xff1a;使用标准C库#xff0c;但使用标准C库你必须关闭半主机模式#xff08;1#xff09;添加下面代码就是关闭半主机模式/* 告知连接器不从C库链接使用半主机的函数 */ #pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */…第一种方法使用标准C库但使用标准C库你必须关闭半主机模式1添加下面代码就是关闭半主机模式 /* 告知连接器不从C库链接使用半主机的函数 */ #pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */ void _sys_exit(int x) {x x; }/* 标准库需要的支持类型 */ struct __FILE {int handle; };FILE __stdout; 在独立应用程序中不可能支持半主机操作。 因此必须确保应用程序中没有链接 C 库半主机函数。为确保没有从 C 库链接使用半主机的函数 必须导入符号 __use_no_semihosting 。可在工程的任何 C 或汇编语言源文件中执行此操作如下所示在 C 模块中使用 #pragma 指令#pragma import(__use_no_semihosting)在汇编语言模块中使用 IMPORT 指令IMPORT __use_no_semihosting2串口重定向将你要输出信息的串口添加到这句函数里面/// 串口发送重定向 int fputc(int ch, FILE * file) {Uart_SendDataPoll(M0P_UART0,ch); //调用库函数通过UART0发送一个字母。return ch; }如果是不同型号的MCU或者使用那个串口更改对应的串口号即可接下来你就自己配置好对应的串口初始化就OK了这里需要注意下本文代码我采用华大HC32L系列的它这个库函数Uart_SendDataPoll(M0P_UART0,ch)里面是有等待数据发送完毕的如果你用的是STM32单片机重定向函数应该这么写// 串口发送重定向 int fputc(int ch, FILE * file) {USART_SendData(USART1,ch); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!SET);//等待发送结束return ch; } 需要自己在添加一行代码来等待发送完毕因为ST发送库函数里面没有等待语句3下面是我自己完整的配置我是使用串口0#include BSP_GPIO.h #include BSP_Uart.h//#include UFD.h uint8_t u8Rx0Data;/* 告知连接器不从C库链接使用半主机的函数 */ #pragma import(__use_no_semihosting)/* 定义 _sys_exit() 以避免使用半主机模式 */ void _sys_exit(int x) {x x; }/* 标准库需要的支持类型 */ struct __FILE {int handle; };FILE __stdout; /// 串口发送重定向 int fputc(int ch, FILE * file) {Uart_SendDataPoll(M0P_UART0,ch); //调用库函数通过UART0发送一个字母。return ch; } static void Uart0_PortInit(void) {stc_gpio_cfg_t stcGpioCfg;/// 打开GPIO外设时钟门控Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);DDL_ZERO_STRUCT(stcGpioCfg);/// 端口方向配置 UART0_TXDstcGpioCfg.enDir GpioDirOut;Gpio_Init(PORT_DEBUG_TXD,PIN_DEBUG_TXD,stcGpioCfg);Gpio_SetAfMode(PORT_DEBUG_TXD,PIN_DEBUG_TXD,GpioAf2);//UART0_TXD/// 端口方向配置 UART0_RXDstcGpioCfg.enDir GpioDirIn;/// 端口上下拉配置-上拉stcGpioCfg.enPu GpioPuEnable;Gpio_Init(PORT_DEBUG_RXD,PIN_DEBUG_RXD,stcGpioCfg);Gpio_SetAfMode(PORT_DEBUG_RXD,PIN_DEBUG_RXD,GpioAf2);//UART0_RXDSysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE); /*Set SWD port to GPIO mode*/ } static void Uart0_Init(void) {stc_uart_cfg_t stcCfg;stc_uart_baud_t stcBaud;DDL_ZERO_STRUCT(stcCfg);DDL_ZERO_STRUCT(stcBaud);/// 打开UART0外设时钟门控Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,TRUE);///UART InitstcCfg.enRunMode UartMskMode1; ///模式1stcCfg.enStopBit UartMsk1bit; ///1bit停止位stcCfg.enMmdorCk UartMskDataOrAddr; ///多机模式时stcCfg.stcBaud.u32Baud 1000000; ///波特率1000000stcCfg.stcBaud.enClkDiv UartMsk8Or16Div; ///通道采样分频配置stcCfg.stcBaud.u32Pclk Sysctrl_GetPClkFreq(); ////获得外设时钟PCLK频率值Uart_Init(M0P_UART0, stcCfg); ///串口初始化///UART中断使能Uart_ClrStatus(M0P_UART0,UartRC); ///清接收请求Uart_ClrStatus(M0P_UART0,UartTC); ///清接收请求Uart_EnableIrq(M0P_UART0,UartRxIrq); ///使能串口接收中断EnableNvic(UART0_2_IRQn, IrqLevel3, TRUE); ///系统中断使能 }void BSP_UartInit(void) {Uart0_PortInit();Uart0_Init(); }第二种方法使用微库因为使用微库的话 ,不会使用半主机模式咱也就不用在写那几句关闭半主机模式的语句1在Keil工程中“中勾选 ”Use MicroLIB2重定向输出这个跟第一种方法一样// 串口发送重定向 int fputc(int ch, FILE * file) {Uart_SendDataPoll(M0P_UART0,ch); //调用库函数通过UART0发送一个字母。return ch; }3下面是我自己完整的配置我是使用串口0#include BSP_GPIO.h #include BSP_Uart.h//#include UFD.h uint8_t u8Rx0Data;// 串口发送重定向 int fputc(int ch, FILE * file) {Uart_SendDataPoll(M0P_UART0,ch); //调用库函数通过UART0发送一个字母。return ch; } static void Uart0_PortInit(void) {stc_gpio_cfg_t stcGpioCfg;/// 打开GPIO外设时钟门控Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);DDL_ZERO_STRUCT(stcGpioCfg);/// 端口方向配置 UART0_TXDstcGpioCfg.enDir GpioDirOut;Gpio_Init(PORT_DEBUG_TXD,PIN_DEBUG_TXD,stcGpioCfg);Gpio_SetAfMode(PORT_DEBUG_TXD,PIN_DEBUG_TXD,GpioAf2);//UART0_TXD/// 端口方向配置 UART0_RXDstcGpioCfg.enDir GpioDirIn;/// 端口上下拉配置-上拉stcGpioCfg.enPu GpioPuEnable;Gpio_Init(PORT_DEBUG_RXD,PIN_DEBUG_RXD,stcGpioCfg);Gpio_SetAfMode(PORT_DEBUG_RXD,PIN_DEBUG_RXD,GpioAf2);//UART0_RXDSysctrl_SetFunc(SysctrlSWDUseIOEn, TRUE); /*Set SWD port to GPIO mode*/ } static void Uart0_Init(void) {stc_uart_cfg_t stcCfg;stc_uart_baud_t stcBaud;DDL_ZERO_STRUCT(stcCfg);DDL_ZERO_STRUCT(stcBaud);/// 打开UART0外设时钟门控Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,TRUE);///UART InitstcCfg.enRunMode UartMskMode1; ///模式1stcCfg.enStopBit UartMsk1bit; ///1bit停止位stcCfg.enMmdorCk UartMskDataOrAddr; ///多机模式时stcCfg.stcBaud.u32Baud 1000000; ///波特率1000000stcCfg.stcBaud.enClkDiv UartMsk8Or16Div; ///通道采样分频配置stcCfg.stcBaud.u32Pclk Sysctrl_GetPClkFreq(); ////获得外设时钟PCLK频率值Uart_Init(M0P_UART0, stcCfg); ///串口初始化///UART中断使能Uart_ClrStatus(M0P_UART0,UartRC); ///清接收请求Uart_ClrStatus(M0P_UART0,UartTC); ///清接收请求Uart_EnableIrq(M0P_UART0,UartRxIrq); ///使能串口接收中断EnableNvic(UART0_2_IRQn, IrqLevel3, TRUE); ///系统中断使能 }void BSP_UartInit(void) {Uart0_PortInit();Uart0_Init(); }总结要使用第一种还是第二种看自己选择大家好像选择第一种比较多。
http://www.dnsts.com.cn/news/200019.html

相关文章:

  • 室外设计网站推荐设计色彩的门户网站模板
  • 专做实习生招聘的网站做英文网站违法吗
  • 济南建设网站企业什么行业愿意做网站
  • 建设工程中标查询网站什么网站的页面做的比较好看
  • aspnet网站开发教程数据库产品介绍网站html
  • 下载免费网站模板南京网站开发南京乐识权威
  • 中小学网站模板源码营销型网站网站建设
  • 长春网站seo公司网站域名空间到期自己怎么续费
  • asp钓鱼网站开发合肥响应式网站开发
  • 铜仁公司做网站石家庄 网络科技
  • 手机模板网站下载昆山建设银行网站
  • 企业网站制造伊犁州住房城乡建设局网站
  • 那个网站有免费模板做美容一般在哪个网站团购比较好
  • 营销型网站建设集装箱液袋深圳网站制作收费
  • 一个网站的tdk是指网站的wordpress自定义栏目
  • 遵义市网站制作外包网站开发合同
  • 鲁谷网站建设做黑枸杞的公司网站
  • 网站效果图用什么软件做湛江企业模板建站
  • 备案 网站语言产业互联网排名
  • 织梦网网站建设上海加盟网站建设
  • 江苏国龙翔建设网站.建设一个公司网站多少钱
  • 茂名网站建设方案开发wordpress联系表单发生错误
  • 河南浪博网站开发郴州有哪些推广平台
  • 网络文化经营许可证经营范围seo专业课程
  • 做高端企业网站建设公司wordpress游览量
  • 微信公众平台 网站 对接免费自助制作永久网站
  • diy学做衣服网站桂林技术交流站
  • 酒店网站建设的重要性温州建网站业务人员
  • 做平台的网站有哪些内容专业做seo推广
  • 老版本网站开发工具2021年最新企业所得税政策