stm32 编程的收获,有关C语言(在stm32 公交报站中的收获)

发布者:幸福旅程最新更新时间:2022-04-17 来源: eefocus关键字:stm32  编程  C语言 手机看文章 扫描二维码
随时随地手机看文章

1.

char * msg[MSG_NUM] = {      //以下内容请自行修改


  {"乘客您好,欢迎乘坐"},

{"[n1]2[n0]路"},      //车次,采用单个数字变读(1读作幺)模式,读后恢复正常模式

  {"公交车,本路车由"},

{"开往"},

{",前门上车,后门下车,本车无人售票,请自备零钱"},

{"车辆起动,请站稳扶好"},

{"[2]车辆转弯,请注意安全"},

{"前方到站"},

{"下车的乘客后门请"},

{"车站到了,请您带好随身物品,从后门下车,谢谢您的乘坐,再见"},

{"始发站"},

{"终点站"},

{"soundk"},

{"到了"}


};


指针数组:指针的数组。


在字符串定义的时候使用指针;


调用的时候


void syn6288_SpeakStr(char *text,char MusicID)


例如    syn6288_SpeakStr(msg[12],0);


2.

u8 * sta[STA_NUM] = { 

{"XXXX"},

{"XXXX"},

{"XXXX"},

{"XXXX"},

{"XXXX"},

{"XXXX},

{"XXXX"},

};


调用的时候


如果  syn6288_SpeakStr(sta[0],0);


会报警告


main.c(96): warning:  #167-D: argument of type "u8 *" is incompatible with parameter of type "char *"


这样就不会报告了syn6288_SpeakStr((u8*)sta[0],0);


 


3.结构体数组

typedef struct 

{

       unsigned char Index[2];

       char Msk[32];

}typFNT_GB16;


const typFNT_GB16 tfont16[]=

{

"公",0x00,0x80,0x04,0x80,0x04,0x80,0x08,0x40,0x08,0x40,0x10,0x20,0x20,0x10,0x42,0x08,

0x82,0x06,0x04,0x00,0x04,0x40,0x08,0x20,0x10,0x20,0x3F,0xF0,0x10,0x10,0x00,0x00,/*0*/

"交",0x02,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x00,0x00,0x10,0x10,0x10,0x08,0x20,0x24,

0x48,0x24,0x04,0x40,0x02,0x80,0x01,0x00,0x02,0x80,0x0C,0x40,0x30,0x30,0xC0,0x0E,/*1*/

"报",0x10,0x00,0x11,0xFC,0x11,0x04,0x11,0x04,0xFD,0x14,0x11,0x08,0x11,0x00,0x15,0xFC,

0x19,0x44,0x31,0x44,0xD1,0x28,0x11,0x28,0x11,0x10,0x11,0x28,0x51,0x44,0x21,0x82,/*2*/

"站",0x10,0x20,0x08,0x20,0x08,0x20,0x7E,0x20,0x00,0x3E,0x04,0x20,0x44,0x20,0x44,0x20,

0x25,0xFC,0x29,0x04,0x29,0x04,0x0F,0x04,0xF1,0x04,0x41,0x04,0x01,0xFC,0x01,0x04,/*3*/

"℃",0xC0,0x00,0x23,0xE8,0x2C,0x18,0xD8,0x08,0x10,0x08,0x30,0x00,0x30,0x00,0x30,0x00,

0x30,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x18,0x08,0x0C,0x10,0x03,0xE0,0x00,0x00,/*0*/


}


 


自动统计汉字数目    HZnum=sizeof(tfont16)/sizeof(typFNT_GB16);


 


//******************************************************************

//功能:    显示单个16X16中文字体

//输入参数:x,y :起点坐标

// fc:前置画笔颜色

// bc:背景颜色  

// s:字符串地址

// mode:模式 0,填充模式;1,叠加模式

//返回值:  无

//修改记录:无

//******************************************************************

void GUI_DrawFont16(u16 x, u16 y, u16 fc, u16 bc, u8 *s,u8 mode)

{

u8 i,j;

u16 k;

u16 HZnum;

u16 x0=x;

HZnum=sizeof(tfont16)/sizeof(typFNT_GB16); //自动统计汉字数目


for (k=0;k{

    if ((tfont16[k].Index[0]==*(s))&&(tfont16[k].Index[1]==*(s+1))) 

      { LCD_SetWindows(x,y,x+16-1,y+16-1);

          for(i=0;i<16*2;i++)

             {

                for(j=0;j<8;j++)

                  {

                     if(!mode) //非叠加方式

                          {

                             if(tfont16[k].Msk[i]&(0x80>>j)) LCD_WR_DATA_16Bit(fc);

                             else LCD_WR_DATA_16Bit(bc);

                         }

                    else

                 {

                        POINT_COLOR=fc;

                         if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点

                         x++;

if((x-x0)==16)

{

x=x0;

y++;

break;

}

}



}


}



}  

continue;  //查找到对应点阵字库立即退出,防止多个汉字重复取模带来影响

}

LCD_SetWindows(0,0,lcddev.width-1,lcddev.height-1);//恢复窗口为全屏  


 


 


if(tfont16[k].Msk[i]&(0x80>>j)) LCD_DrawPoint(x,y);//画一个点  


通过移位来判断是否画点;


 


4,

int fputc(int ch, FILE *f)


{      


while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   


    USART1->DR = (u8) ch;      


return ch;


}


printf 必备的;


5.

Rct6 是256 k 的flash  要选择HD的 下载时候


6.

绝对不要在中断中处理太多,不然上一次的中断还没有完,下一次的中断有可能就来了;中断竞争。

————————————————

版权声明:本文为CSDN博主「csdn_dx」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/u011041241/article/details/51069573


关键字:stm32  编程  C语言 引用地址:stm32 编程的收获,有关C语言(在stm32 公交报站中的收获)

上一篇:usmart_dev.init(SystemCoreClock/1000000); stm32 战舰的usmart 程序
下一篇:keil_提示出错 cannot load flash programming algorithm !

推荐阅读最新更新时间:2024-11-13 10:12

STM32低功耗定时器(LPTIM)有哪些独特功能
开发低功耗产品,我们会比较关注整个系统的功耗问题。那么,LPTIM低功耗定时器你有关注吗? 1写在前面 在早些年,可能较少听见LPTIM这个名词。随着低功耗产品需求越来越严格,MCU厂商就推出了针对低功耗应用的LPTIM定时器。 定时器是我们常见的一种外设,之所以这么常见,原因在于定时器的用途非常广泛。 在STM32所有MCU中都配有定时器,那么你有关注、对比过各系列、各型号MCU中定时器的差异吗? 2 哪些STM32配有LPTIM定时器? 在STM32中,相对较新的MCU部分型号配有LPTIM定时器。 比如:STM32F7、H7高性能MCU,STM32L0、L4低功耗MCU,以及新推出的G0、G4系列中都配有这种LPTI
[单片机]
c语言结构体定义结构体
代码1 定义结构体 _m_usmart_dev struct _m_usmart_dev { struct _m_usmart_nametab *funs; //函数名指针 void (*init)(u8); //初始化 u8 (*cmd_rec)(u8*str); //识别函数名及参数 void (*exe)(void); //执行 void (*scan)(void); //扫描 u8 fnum; //函数数量 u8 pnum; //参数数量 u8 id; //函数id u8 sptype; //参数显示类型(非字符串参数):0,10进制;1,16进制
[单片机]
0802LCD 4位显示程序 PIC单片机C语言程序
#include xc.h #include pic.h //#include head.h #define uchar unsigned char #define uint unsigned int #pragma config FOSC = XT // Oscillator Selection bits (XT oscillator) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT ena
[单片机]
高手谈谈单片机编程思路
我曾经做过两年的单片机产品,在对单片机编程的过程中逐渐形成了一个大体固定的整体框架,也可以说是编程思路。现提出来供大家参考。 首先,对外围芯片进行分类,属同一功能或同一芯片的程序采用模块化的形式,用固定的几个函数实现,一般不同芯片之间的函数功能尽量不重叠,也不要使用一个函数覆盖几个芯片,以便于后期的调试,如果涉及到芯片之间通讯的,可以单独列出,使用专门的函数进行处理; 其次,将单片机中需要完成的工作按轻重缓急进行分类,一般我会设置两个定时中断,其中一个定时时间大致在20mS左右,用来处理一些按钮防抖处理、时间日期计算、对输入处理后产生对应标志位、器件刷新等一些实时性要求不是很高,但必须有时间要求的事物处理,另外设立一个定时
[单片机]
基于L298N的STM32的直流电机PWM调速控制
这两天研究了一下基于L298N与stm32的直流电机调速,实验结果良好,可以根据调节STM32的PWM占空比来进行直流电机的调速。实验系统图如下: 首先整个PWM实验选用的是stm32f103系列,驱动模块选择的是L298N驱动模块,以及12V直流电源。简单的来说,电机调速就是通过stm32输出PWM来进行控制L298N的使能端ENA。 L298N驱动模块 使用方法: 输出A:通道A输出,连接直流电机 输出B:通道B输出,连接电机 12V供电:主电源正极输入 GND:主电源正负极输入 5V输出:5V电压输出端,可用于给STM32开发板进行供电 ENA:通道A使能 ENB:通道B使能 IN1—IN4:逻辑输入IN1-IN
[单片机]
基于L298N的<font color='red'>STM32</font>的直流电机PWM调速控制
STM32_DAC之软件触发
stm32_DAC可以用来输出固定的电压值,有些时候需要按键可调输出的电压值。其中一种方法是使用外部中断EXTI9, 另外一种方法就是使用软件触发。 如果将DAC_InitTypeDef.DAC_Trigger设置为DAC_Trigger_None, 那么,不需要其他任何的触发源,直接使用DAC_SetChannelxData(),就可以设定输出电压的大小。如果使用了软件触发,那么,每次在使用DAC_SetChannelxData()修改输出电压后,还需要调用DAC_SoftwareTriggerCmd(),目的是使能软件触发。由于:软件触发是硬件在一个APB1时钟周期后自动关断的,于是,每次修改输出电压的值后,都要调用DAC
[单片机]
[正点原子]STM32开发板F103 第41讲 RTC实时时钟备份区域BKP原理
RTC模块与 时钟配置系统在后备区域,在复位时候不会被清除(框图: 中文参考手册) 如何使用RTC实现时钟?RTCCLK RTC的时钟有几个来源有三种 32.768khz 8Mhz 40khz RTC_PRL是自动重装载寄存器 RTC_DIV 预分频余数寄存器 RTC_DIV的作用就是 可以提供一个更加精确的时钟, 时钟开启之后会给RTC_PRL写一个值(比如100),那么RTCCLK就会被 /100 之后得到 TR_CLK。 TR_CLK的一个周期有100个 RTCCLK ,RTC_DIV在你装载之后它的值就是100,他在 RTCCLK的控制下每一个时钟 减一, 假如RTCCLK=100hz,那么 RT
[单片机]
[正点原子]<font color='red'>STM32</font>开发板F103 第41讲 RTC实时时钟备份区域BKP原理
arm学习笔记五(c/c++与arm汇编混合编程)
常见方式: 1 在c/c++程序中嵌入汇编指令 语法格式: __asm { 汇编语言程序 } 2 在汇编程序中访问c/c++定义的全局变量 示例代码如下: test.c #include stdio.h int gVar_1=12; extern asmDouble(void) int main(void){ printf( original value of gVar_1 is %d ,gVar_1); admDouble(); printf( modified value of gVar_1 is %d ,gVar_1); return 0; } test.s AREA asmfil
[单片机]

推荐帖子

单片机ABSACC.H_文件库文件是什么作用
#ifndef__ABSACC_H__#define__ABSACC_H__#defineCBYTE((unsignedcharvolatilecode*)0)#defineDBYTE((unsignedcharvolatiledata*)0)#definePBYTE((unsignedcharvolatilepdata*)0)#defineXBYTE((unsignedcharvolatilexdata*)0)#defin
HUI535233725 单片机
旧手机的新用法(9)- 文件同步
在这里,推荐大家使用syncthing做文件同步。已经有很多免费或收费的网盘了,一些手机甚至集成了云同步功能,为什么还需要使用syncthing呢? 一些手机虽然带有云同步功能,但这个功能和厂家是绑定的,不能在不同品牌手机之间同步; 不想安装收费并带有很多不需要功能的网盘 免费的网盘限速,容量较小; 大部分网盘没有提供版本管理功能; 大部分网盘只能同步一个文件夹借用知乎上一段介绍文字:Syncthing是一款开源免费跨平台的文件同步工具,是基于P2P技术实
dcexpert DIY/开源硬件专区
51函数中断系统问题
为什么这个程序,我不用按矩阵键盘的第三排键,烧录之后LED等就会四个灯、四个灯的变,就像流水灯那样,我的中断函数完全没有用,这是什么情况51函数中断系统问题按键中断的话感觉还是下降沿触发方式更好一些,你可以将IT0设为1看下,另外可以测量一下外部中断0io口实际电平看看是硬件的问题还是软件的问题。按键进入中断时候关中断,执行完中断任务后开中断首先确保硬件连接正确稳定,另外就是一点点调啦 还真的对了。谢谢哈 不客气!
圈在指尖 51单片机
NXP收购FreeScale后会有什么变化
NXP收购了FreeScale,大家觉得对FreeScale的MCU会有什么影响?NXP收购FreeScale后会有什么变化原有业务不会有太大变化吧,个人认为收购飞思卡尔只是资本上的运作,对飞思卡尔现有的产品线应该不会有大的改动。。。freescale的社区以后是不是要合并到NXP了。老实说还没用过飞思卡尔的mcu呢。。。飞思卡尔的mcu,贵啊,,,,,,,,,jianping-sun发表于2015-3-310:24老实说还没用过飞思卡尔的mcu呢。。。可以
dcexpert 单片机
keil4在编译时出现了空间不足
有哪位大神帮忙解决一下这个问题keil4在编译时出现了空间不足试试C/C++里面的Level-1(01)应该是内存空间不足,把不用的程序删掉,或者优化一下。破解了没有?
wxdm2dzx stm32/stm8
【2024 DigiKey 创意大赛】会议声源追踪器 会议室环境检测(1)
这次打算做一个会议拾音系统,主要功能如下:1、声源定位,识别声音方向;(麦克风阵列,控制器)2、声源追踪,用步进电机控制麦克风方向,追踪声源,减少干扰噪声;(麦克风阵列,控制器)3、检测会议室环境,上传云端,可以提醒工作人员提前开启空调等设备。(传感器、ESP32)。由于功能1、2较难,先进行了任务3。任务3主要使用的模块是ESP32和传感器,结合阿里云物联网平台。使用的开发环境是VSCode+Platformio。由易到难:1、首先连
左手阿飞 DigiKey得捷技术专区
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved